A. python中hub(ss,3)是什麼意思
函數缺少返回值。print(ss,hub(ss, 3)) 對於組合數據類型的全局變數,如果在函數內部沒有被真實創建的同名變數,則函數內部不可以直接使用並修改全局變數的值 .Python由荷蘭數學和計算機科學研究學會的吉多·范羅蘇姆於1990 年代初設計,作為一門叫做ABC語言的替代品。Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言,[2]隨著版本的不斷更新和語言新功能的添加,逐漸被用於獨立的、大型項目的開發。
B. 樹莓派 用python 可以做什麼
裝了某pn和ss翻wall
裝了Transmission-daemon和minidlna下載看片
充電寶+樹莓派+樹莓派攝像頭插件+無線網卡=遠程監控系統
C. 裝了Python版的ss,要怎麼開啟udp
Python版不是默認打開UDP的嗎 iptables -F清空防火牆規則試試 python版好像不支持udp轉發才對!
D. 如何用python寫 數據分析工具
數據導入
導入本地的或者web端的CSV文件;
數據變換;
數據統計描述;
假設檢驗
單樣本t檢驗;
可視化;
創建自定義函數。
數據導入
這是很關鍵的一步,為了後續的分析我們首先需要導入數據。通常來說,數據是CSV格式,就算不是,至少也可以轉換成CSV格式。在Python中,我們的操作如下:
Python
1
2
3
4
5
6
7
8
import pandas as pd
# Reading data locally
df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv')
# Reading data from web
data_url = "t/Analysis-with-Programming/master/2014/Python/Numerical-Descriptions-of-the-Data/data.csv"
df = pd.read_csv(data_url)
為了讀取本地CSV文件,我們需要pandas這個數據分析庫中的相應模塊。其中的read_csv函數能夠讀取本地和web數據。
數據變換
既然在工作空間有了數據,接下來就是數據變換。統計學家和科學家們通常會在這一步移除分析中的非必要數據。我們先看看數據:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Head of the data
print df.head()
# OUTPUT
0 12432934148330010553
1 41589235 4287806335257
2 17871922 19551074 4544
317152 14501 3536 1960731687
4 12662385 25303315 8520
# Tail of the data
print df.tail()
# OUTPUT
74 2505 20878 3519 1973716513
7560303 40065 7062 1942261808
76 63116756 3561 1591023349
7713345 38902 2583 1109668663
78 2623 18264 3745 1678716900
對R語言程序員來說,上述操作等價於通過print(head(df))來列印數據的前6行,以及通過print(tail(df))來列印數據的後6行。當然Python中,默認列印是5行,而R則是6行。因此R的代碼head(df, n = 10),在Python中就是df.head(n = 10),列印數據尾部也是同樣道理。
在R語言中,數據列和行的名字通過colnames和rownames來分別進行提取。在Python中,我們則使用columns和index屬性來提取,如下:
Python
1
2
3
4
5
6
7
8
9
10
11
# Extracting column names
print df.columns
# OUTPUT
Index([u'Abra', u'Apayao', u'Benguet', u'Ifugao', u'Kalinga'], dtype='object')
# Extracting row names or the index
print df.index
# OUTPUT
Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78], dtype='int64')
數據轉置使用T方法,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Transpose data
print df.T
# OUTPUT
01 23 45 67 89
Abra1243 41581787171521266 5576 927215401039 5424
Apayao2934 92351922145012385 7452109917038138210588
Benguet148 42871955 353625307712796 24632592 1064
Ifugao3300
... 69 70 71 72 73 74 75 76 77
Abra ...12763 247059094 620913316 250560303 631113345
Apayao ...376251953235126 6335386132087840065 675638902
Benguet... 2354 4045 5987 3530 2585 3519 7062 3561 2583
Ifugao ... 9838171251894015560 774619737194221591011096
Kalinga...
78
Abra2623
Apayao 18264
Benguet 3745
Ifugao 16787
Kalinga16900
Other transformations such as sort can be done using<code>sort</code>attribute. Now let's extract a specific column. In Python, we do it using either<code>iloc</code>or<code>ix</code>attributes, but<code>ix</code>is more robust and thus I prefer it. Assuming we want the head of the first column of the data, we have
其他變換,例如排序就是用sort屬性。現在我們提取特定的某列數據。Python中,可以使用iloc或者ix屬性。但是我更喜歡用ix,因為它更穩定一些。假設我們需數據第一列的前5行,我們有:
Python
1
2
3
4
5
6
7
8
9
print df.ix[:, 0].head()
# OUTPUT
0 1243
1 4158
2 1787
317152
4 1266
Name: Abra, dtype: int64
順便提一下,Python的索引是從0開始而非1。為了取出從11到20行的前3列數據,我們有:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
print df.ix[10:20, 0:3]
# OUTPUT
AbraApayaoBenguet
109811311 2560
1127366 15093 3039
12 11001701 2382
13 7212 11001 1088
14 10481427 2847
1525679 15661 2942
16 10552191 2119
17 54376461734
18 10291183 2302
1923710 12222 2598
20 10912343 2654
上述命令相當於df.ix[10:20, ['Abra', 'Apayao', 'Benguet']]。
為了舍棄數據中的列,這里是列1(Apayao)和列2(Benguet),我們使用drop屬性,如下:
Python
1
2
3
4
5
6
7
8
9
print df.drop(df.columns[[1, 2]], axis = 1).head()
# OUTPUT
AbraIfugaoKalinga
0 1243330010553
1 4158806335257
2 17871074 4544
317152 1960731687
4 12663315 8520
axis參數告訴函數到底舍棄列還是行。如果axis等於0,那麼就舍棄行。
統計描述
下一步就是通過describe屬性,對數據的統計特性進行描述:
Python
1
2
3
4
5
6
7
8
9
10
11
12
print df.describe()
# OUTPUT
AbraApayaoBenguetIfugao Kalinga
count 79.000000 79.00000079.000000 79.000000 79.000000
mean 12874.37974716860.6455703237.39240512414.62025330446.417722
std16746.46694515448.1537941588.536429 5034.28201922245.707692
min927.000000401.000000 148.000000 1074.000000 2346.000000
25% 1524.000000 3435.5000002328.000000 8205.000000 8601.500000
50% 5790.00000010588.0000003202.00000013044.00000024494.000000
75%13330.50000033289.0000003918.50000016099.50000052510.500000
max60303.00000054625.0000008813.00000021031.00000068663.000000
假設檢驗
Python有一個很好的統計推斷包。那就是scipy裡面的stats。ttest_1samp實現了單樣本t檢驗。因此,如果我們想檢驗數據Abra列的稻穀產量均值,通過零假設,這里我們假定總體稻穀產量均值為15000,我們有:
Python
1
2
3
4
5
6
7
from scipy import stats as ss
# Perform one sample t-test using 1500 as the true mean
print ss.ttest_1samp(a = df.ix[:, 'Abra'], popmean = 15000)
# OUTPUT
(-1.1281738488299586, 0.26270472069109496)
返回下述值組成的元祖:
t : 浮點或數組類型
t統計量
prob : 浮點或數組類型
two-tailed p-value 雙側概率值
通過上面的輸出,看到p值是0.267遠大於α等於0.05,因此沒有充分的證據說平均稻穀產量不是150000。將這個檢驗應用到所有的變數,同樣假設均值為15000,我們有:
Python
1
2
3
4
5
6
print ss.ttest_1samp(a = df, popmean = 15000)
# OUTPUT
(array([ -1.12817385, 1.07053437, -65.81425599,-4.564575, 6.17156198]),
array([2.62704721e-01, 2.87680340e-01, 4.15643528e-70,
1.83764399e-05, 2.82461897e-08]))
第一個數組是t統計量,第二個數組則是相應的p值。
可視化
Python中有許多可視化模塊,最流行的當屬matpalotlib庫。稍加提及,我們也可選擇bokeh和seaborn模塊。之前的博文中,我已經說明了matplotlib庫中的盒須圖模塊功能。
;
重復100次; 然後
計算出置信區間包含真實均值的百分比
Python中,程序如下:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import numpy as np
import scipy.stats as ss
def case(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
m = np.zeros((rep, 4))
for i in range(rep):
norm = np.random.normal(loc = mu, scale = sigma, size = n)
xbar = np.mean(norm)
low = xbar - ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
up = xbar + ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
if (mu > low) & (mu < up):
rem = 1
else:
rem = 0
m[i, :] = [xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
上述代碼讀起來很簡單,但是循環的時候就很慢了。下面針對上述代碼進行了改進,這多虧了Python專家,看我上篇博文的15條意見吧。
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import scipy.stats as ss
def case2(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
scaled_crit = ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
norm = np.random.normal(loc = mu, scale = sigma, size = (rep, n))
xbar = norm.mean(1)
low = xbar - scaled_crit
up = xbar + scaled_crit
rem = (mu > low) & (mu < up)
m = np.c_[xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
更新
那些對於本文ipython notebook版本感興趣的,請點擊這里。這篇文章由Nuttens Claude負責轉換成ipython notebook 。
E. 用python解決列表問題
實現如下僅供參考:
def flat(nums):
res = []
for i in nums:
if isinstance(i, list):
res.extend(flat(i))
else:
res.append(i)
return res
s=[201,[1,2,3],201,[1,2,3,4,5],202,[1,2,3,4,5,7]]
s=flat(s)
print(s)
輸出:
[201, 1, 2, 3, 201, 1, 2, 3, 4, 5, 202, 1, 2, 3, 4, 5, 7]
F. python和libev版本ss可以同時運行嗎
可以同時運行。只要監聽不同埠就行。
G. 怎麼調用編寫好的python程序
1 使用os.system函數運行其他程序
2 使用ShellExecute函數運行其他程序
3 使用CreateProcess函數運行其他程序
4 使用ctypes調用kernel32.dll中的函數
1 使用os.system函數運行其他程序
os模塊中的system()函數可以方便地運行其他程序或者腳本。其函數原型如下所示。
os.system(command) 其參數含義如下所示。
command 要執行的命令,相當於在Windows的cmd窗口中輸入的命令。如果要向程序或者腳本傳遞參數,可以使用空格分隔程序及多個參數。
以下實例實現通過os.system()函數打開系統的記事本程序。
>>> import os # 使用os.system()函數打開記事本程序 >>> os.system('notepad') 0 # 關閉記事本後的返回值 # 向記事本傳遞參數,打開python.txt文件 >>> os.system('notepad python.txt')
>>> import os # 使用os.system()函數打開記事本程序 >>> os.system('notepad') 0 # 關閉記事本後的返回值 # 向記事本傳遞參數,打開python.txt文件 >>> os.system('notepad python.txt')
2 使用ShellExecute函數運行其他程序
除了使用os模塊中的os.system()函數以外,還可以使用win32api模塊中的ShellExecute()函數。其函數如下所示。
ShellExecute(hwnd, op , file , params , dir , bShow )
其參數含義如下所示。
hwnd:父窗口的句柄,如果沒有父窗口,則為0。
op:要進行的操作,為「open」、「print」或者為空。
file:要運行的程序,或者打開的腳本。
arams:要向程序傳遞的參數,如果打開的為文件,則為空。
dir:程序初始化的目錄。
Show:是否顯示窗口。
以下實例使用ShellExecute函數運行其他程序。
>>> import win32api # 打開記事本程序,在後台運行,即顯示記事本程序的窗口 >>> win32api.ShellExecute(0, 'open', 'notepad.exe', '','',0)
# 打開記事本程序,在前台運行 >>> win32api.ShellExecute(0, 'open', 'notepad.exe', '','',1)
# 向記事本傳遞參數,打開python.txt >>> win32api.ShellExecute(0, 'open', 'notepad.exe', 'python.txt','',1)
# 在默認瀏覽器中打開http://www.python.org網站 >>> win32api.ShellExecute(0, 'open', 'http://www.python.org', '','',1)
# 在默認的媒體播放器中播放E:\song.wma >>> win32api.ShellExecute(0, 'open', 'E:\\song.wma', '','',1)
# 運行位於E:\book\code目錄中的MessageBox.py腳本 >>> win32api.ShellExecute(0, 'open', 'E:\\book\\code\\MessageBox.py', '','',1)
可以看出,使用ShellExecute函數,就相當於在資源管理器中雙擊文件圖標一樣,系統會打開相應的應用程序執行操作。
3 使用CreateProcess函數運行其他程序
為了便於控制通過腳本運行的程序,可以使用win32process模塊中的CreateProcess()函數。其函數原型如下所示。
CreateProcess(appName, commandLine , processAttributes , threadAttributes , bInheritHandles , dwCreationFlags , newEnvironment , currentDirectory , startupinfo )
CreateProcess(appName, commandLine , processAttributes , threadAttributes , bInheritHandles , dwCreationFlags , newEnvironment , currentDirectory , startupinfo )
其參數含義如下。
appName:可執行的文件名。
commandLine:命令行參數。
rocessAttributes:進程安全屬性,如果為None,則為默認的安全屬性。
threadAttributes:線程安全屬性,如果為None,則為默認的安全屬性。
InheritHandles:繼承標志。
dwCreationFlags:創建標志。
ewEnvironment:創建進程的環境變數。
currentDirectory:進程的當前目錄。
tartupinfo :創建進程的屬性。
以下實例使用win32process.CreateProcess函數運行記事本程序。
>>> import win32process >>> win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) (, , 280, 3076) # 函數返回進程句柄、線程句柄、進程ID,以及線程ID
>>> import win32process >>> win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) (<?XML:NAMESPACE PREFIX = PYHANDLE />, , 280, 3076) # 函數返回進程句柄、線程句柄、進程ID,以及線程ID
有了已創建進程的句柄就可以使用win32process.TerminateProcess函數結束進程,或者使用win32event.WaitForSingleObject等待創建的線程結束。其函數原型分別如下。
TerminateProcess(handle, exitCode) WaitForSingleObject(handle, milliseconds )
對於TerminateProcess參數含義分別如下。
handle:要操作的進程句柄。
exitCode:進程退出代碼。
對於WaitForSingleObject參數含義分別如下。
handle:要操作的進程句柄。
milliseconds:等待的時間,如果為?1,則一直等待。
以下實例實現創建進程後並對其進行操作。
>>> import win32process # 打開記事本程序,獲得其句柄>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) # 使用TerminateProcess函數終止記事本程序>>> win32process.TerminateProcess(handle[0],0) # 導入win32event模塊>>> import win32event # 創建進程獲得句柄>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) # 等待進程結束>>> win32event.WaitForSingleObject(handle[0], -1) 0 # 進程結束的返回值
>>> import win32process # 打開記事本程序,獲得其句柄
>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) # 使用TerminateProcess函數終止記事本程序
>>> win32process.TerminateProcess(handle[0],0) # 導入win32event模塊
>>> import win32event # 創建進程獲得句柄
>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) # 等待進程結束
>>> win32event.WaitForSingleObject(handle[0], -1) 0 # 進程結束的返回值
4 使用ctypes調用kernel32.dll中的函數
使用ctypes模塊可以使Python調用位於動態鏈接庫中的函數。在Python 2.5版中已經包含了ctypes模塊。如果使用其他版本的Python,可以到http://python.net/crew/theller/ctypes網站下載安裝。ctypes適用於Python 2.3版本及以上。
H. 在python里的whitespace怎麼理解
就是空格啊
如果你不確定,那就顯示指定分隔符
再就是可以換正則表達式
沒必要糾結一個單詞的具體含義
確實想糾結可以去看實現的源碼
I. 哪一個SS版本好用,GO版本,libev版本,python版本,求利弊分析
不知道你的ID是不可能盜用的,你說的盜用欠准確新版本編輯wsgi.py對應部分即可訪問
J. 新手學python+linux,問libev怎麼安裝,安裝在哪裡
打開終端,輸入:
sudo apt-get install libdev
是dev呃...
不行的話去軟體中心找個idle下載即可。
還不行的話雙擊壓縮包打開,解壓在一個文件夾,然後在終端導航到那個文件夾,然後:
sudo make -f Makefile
sudo make
sudo make install
還是不行的話,寫文本文檔然後在終端輸入:
python a.py
a.py是文本文檔,此時無需安裝任何軟體