對於同樣的數值計算任務,使用numpy比直接編寫python程式碼實現 優點:
個人以前會弄混shape和size,注意shape列印的是陣列的形狀是一個元組,size則是表示陣列大小即總共有多少個元素
a.astype(str)
可以把a陣列元素轉為str型別np.array([...])
np.arange(start,stop,step,dtype)
左閉右開,np.linspace(start,stop,num,endpoint)
預設左右取閉,num是要刪除的等間隔樣例數量(預設50),endpoint 序列中是否包含stop值, 預設為truenp.full((2, 4), 666)
np.random.seed(2022)
設定隨機種子,使得每次隨機的結果固定,np.random.rand(2,5)
隨機生成 2行5列的2維陣列,返回資料在[0,1)之間;np.random.randint(2,5,5)
在[2,5) 範圍內生成5個隨機整數;np.random.uniform(2,5,10)
在 [2,5) 之間 生成均勻分佈的10個數位;np.random.uniform(2,5,(2,5))
在 [2,5) 之間 生成均勻分佈的(2,5)個數位; np.random.randn((2,5))
則返回有標準正態分佈的資料,均值1方差0;np.random.normal(1,10,(2,5))
則可指定均值和標準差;另外,choice
從給定的陣列裡 生成隨機結果,shuffle
把一個陣列進行隨機排列(如果陣列是多維的 則只會在第一維度打散資料),permutation
把一個陣列進行隨機排列 ,或者數位的全排列,兩者功能相同但permutation不會更改原來的arr 會返回一個新的copy三種索引方法:
x[np.array([[0,2],[1,3]])]
來取x對應位置的值;對於二維陣列,Y[:,[0, 2]]
篩選第0和第2列,Y[[0,2,3],[1,2,3]]
同時指定行列x[x>5] = 1
通過條件進行賦值,把x中大於5的值全部賦為1,x[x<5] += 20
,小於5的值全部加20,還可以進行條件組合,比如x[(x%2==0)| (x>7)]
和x[(x%2==0)& (x>7)]
;注意對於二維陣列Y = np.arange(20).reshape(4, 5) 來說,既有行又有列 因此返回的是 行列一維陣列Y[Y>5]
返回的是行列一維陣列,可以用Y[:, 3][Y[:, 3]>5]
把第3列大於5的行資料篩選出來A*B是對應位置元素相乘,對於arr = np.arange(12).reshape(3,4),可以用各種數學統計函數,包括sum,prod(元素乘積),cumsum(np.cumsum(arr)
從頭到尾累加,每加一次輸出一個元素),cumprod(累積),min,max,median,mean,np.percentile(arr,[25,50,75])
和np.quantile(arr,[0.25,0.5,0.75])
求取數列第?分位的數值(後者範圍為0-1),std(標準差)
,var(方差),np.average(arr, weights=np.random.rand(*arr.shape))
加權平均,argmax 尋找最大值的下標
對於a = np.arange(9).reshape(3,3)以及b = np.arange(9,18).reshape(3,3),合併行(行變多)使用np.concatenate([a,b])
或np.vstack([a,b])
或np.row_stack([a,b])
,合併列(列變多)使用np.concatenate([a,b],axis=1)
或np.hstack([a,b])
或np.column_stack([a,b])
。
[1-5 Numpy教學 — 梗直哥隨筆 v0.1 檔案 (gengzhige-essay.readthedocs.io)](https://gengzhige-essay.readthedocs.io/docs/01 環境設定/1-5 Numpy教學.html)
科學計算庫Numpy - mathor (wmathor.com)