1,廣播:對 形狀不同 的陣列的運算採取的操作。但是這個輸入的陣列中必須有乙個 某軸長度為1,或者缺 少了乙個維度(這個時候會自動的在shape屬性前面補上1)。例如:
import numpy as npa=np.arange(10,50,10).reshape(-1,1)
a.shape
(4, 1)
b=np.arange(0,4)
b array([0, 1, 2, 3])
b.shape
(4,)
a+b
array([[10, 11, 12, 13],
[20, 21, 22, 23],
[30, 31, 32, 33],
[40, 41, 42, 43]])
2,內積:np.dot(a,b) 就可以來計算a,b的內積,同樣的np.inner(a,b)也可以,但是它要求最後一維度是要相同的,np.outer(a,b)則是將陣列 展平為一維陣列 再進行計算。
3,求和,平均值,方差:比較簡單,分別是np.sum(), np.mean(), np.var(), np.std()(這個是標準差),關鍵是在加入axis引數以後要很好的區分;看下面的例子應該就比較清楚了:
求和:
aarray([[6, 7, 1, 6],
[1, 0, 2, 3],
[7, 8, 2, 1]])
np.sum(a)
44 np.sum(a,axis= 0 )
array([14, 15, 5, 10])
np.sum(a,axis= 1 )
array([20, 6, 18])
np.sum(a,axis= -1 )
均值:
aarray([[6, 7, 1, 6],
[1, 0, 2, 3],
[7, 8, 2, 1]])
np.mean(a)
3.6666666666666665
np.mean(a,axis=0)
array([ 4.66666667, 5. , 1.66666667, 3.33333333])
方差:
np.var(a)
7.7222222222222223
np.var(a,axis=0)array([ 6.88888889, 12.66666667, 0.22222222, 4.22222222])
np.std(a,axis=0)
array([ 2.62466929, 3.55902608, 0.47140452, 2.05480467])
4,最值和排序:最值有np.max(),np.min() 他們都有axis和out(輸出)引數, 而通過np.argmax(), np.argmin()可以得到取得最大或最小值時的 下標。排序通過np.sort(), 而np.argsort()得到的是排序後的資料原來位置的下標。
a array([[6, 7, 1, 6],
[1, 0, 2, 3],
[7, 8, 2, 1]])
a.sort()
a array([[1, 6, 6, 7],
[0, 1, 2, 3],
[1, 2, 7, 8]])
np.sort(a,axis=0)
array([[0, 1, 2, 3],
[1, 2, 6, 7],
[1, 6, 7, 8]])
np.argsort(a,axis=0)
array([[1, 1, 1, 1],
[0, 2, 0, 0],
[2, 0, 2, 2]])
5, 統計函式:unique()保留陣列中不同的值,返回兩個引數。bincount()對陣列中各個元素出現的次數進行統計,還可以設定相應的 權值。
b=np.random.randint(0,5,8)b array([2, 3, 3, 0, 1, 4, 2, 4])
np.unique(b)
array([0, 1, 2, 3, 4])
c,s=np.unique(b,return_index=true)
c array([0, 1, 2, 3, 4])
s array([3, 4, 0, 1, 5])(元素出現的起始位置)
b array([2, 3, 3, 0, 1, 4, 2, 4])
np.bincount(b)
array([1, 1, 2, 2, 2]) 分別是0 1 2 3 4的個數;
w=np.random.rand(8)
w array([ 0.29529445, 0.4554129 , 0.69615963, 0.4766137 , 0.97929591,
0.46069939, 0.76476676, 0.74556715]) 權重值;
np.bincount(b,w)。
array([ 0.4766137 , 0.97929591, 1.06006121, 1.15157254, 1.20626654]) 權重和;
6,掩碼陣列:表示的是不完整的資料或是含有無效值的資料。
import numpy.ma as mab array([2, 3, 3, 0, 1, 4, 2, 4])
mask=b<3
mx=ma.array(b,mask=mask)
mx masked_array(data = [– 3 3 – – 4 – 4],
mask = [ true false false true true false true false],fill_value = 999999)
接下來就可以對這些資料操作了。
Windows中的Python科學計算開發環境
1.spyder windows的命令列下輸入pip install spyder即可。此時,輸入spyder並不能出現spyder介面,需要另外安裝pyqt4或者pyqt5的安裝包。附 sypder installation官方文件 或者,直接安裝anaconda,spyder直接包含在其中。更新...
python科學計算 numpy
畢設的程式設計中使用了python來處理資料,主要使用的是numpy包,網上大部分對numpy進行介紹的教程比較老舊,想要使用的功能不太容易找到。因此,寫這篇文章來對現有的一些資源就行整理,當然想要更全面的了解numpy的使用還是從訪問官方手冊開始。win下 pip isntall numpy當然最...
用Python做科學計算
python是一種物件導向的 動態的程式語言,具有非常簡潔而清晰的語法,既可以用於快速開發程式指令碼,也可以用於開發大規模的軟體,特別適合於完成各種高層任務。隨著numpy,scipy,matplotlib,enthought librarys等眾多程式庫的開發,python越來越適合於做科學計算。...