# 資料D6:NumPy 陣列的函式/方法 ## 通用函數 Universal Function, ufunc https://zhuanlan.zhihu.com/p/61303877 用於numpy向量化運算 統計型 搜尋排序型 形狀型 ## 統計運算涵式 https://numpy.org/doc/stable/reference/routines.statistics.html 找出陣列的和/最小值/最大值 array.sum() 亦可寫np.sum(a)或sum(a) array.min() array.max() np.nanmax() np.nanmin() 跳過nan之後找出最大/最小值,可以指定要比較的axis,以及回傳值是否要保留維度 比較兩個陣列,找出對應元素的最小/最大值 numpy.fmax() numpy.fmin() percentile() 百分位數 nanpercentile() 忽略nan求百分位數 傳入純量或是陣列的值 (介於0-100 之間),也可以指定要比較的軸,以及回傳值是否要保留維度 quantile() 分位數 nanquantile() 忽略nan求分位數 傳入純量或是陣列的值 (介於0-1之間),也可以指定要比較的軸,以及回傳值是否要保留維度 mean() 平均值(若有nan則回傳nan) nanmean() 忽略nan求平均值 平均值:average() 平均值,可輸入權重weights 可以指定要計算平均數的軸,以及回傳值是否要保留維度。dtype參數是計算使用的型別,若輸入陣列是整數的話,則會用 float64 型別計算,若輸入的是浮點數的話,則是依輸入陣列的型別做為 dtype。 median() 中位數(偶數個數則會將中間相加除以2) nanmedian() 忽略nan求中位數 可以指定要計算中位數的軸,以及回傳值是否要保留維度。 std() 標準差 nanstd() 忽略nan求標準差 var() 變異數 nanvar()忽略nan求變異數 可以指定要計算的軸,以及回傳值是否要保留維度。若是對於精度可能造成的誤差影響,可以改變 dtype 提高精度。 如果要計算樣本標準差/變異數的話,可將 ddof (自由度) 參數傳入 1,在計算平均方差 (mean squared deviation) 時分母就會以 N - ddof 做計算。 corrcoef() 相關係數 參數 rowvar 預設值為 True,代表將每一個 row 當做是一筆變數。 correlate() 兩個一維array的互相關 (Cross-correlation) 參數mode表示回傳的序列形狀: valid max(M, N) full (N+M- 1,) same max(M, N) - min(M, N) + 1 cov() 共變異數 參數: m 一維或二維陣列 y 額外資料,形狀須與 m 相同 rowvar 每一個 row 當做是一筆變數,預設值為 True bias 樣本共變異數的話設為 False(預設值),母體設為True ddof 自由度,預設值為None fweights 頻率加權,預設值為None aweights 觀測向量加權,預設值為None numpy.histogram(a, bins=10, range=None, normed=None, weights=None, density=None) 畫出直方圖 參數: a 輸入陣列 bins bins的定義,可傳入純量、序列、或是不同的方法(例如:auto) range bins的範圍,預設是 a.min() 與 a.max() 之間,或是依照傳入的範圍 weights 權重值,陣列形狀須與 a 相同 density False:回傳各bin的count;True:回傳各bins的probability density ### axis參數 axis=0代表最外面的軸,axis=1則往內一個 例如2維array,0代表列,1代表行 ![](https://i.imgur.com/pf3fCJ2.png) ![](https://i.imgur.com/indygpt.png) ![](https://i.imgur.com/Tm0kybt.png) ## 排序與搜尋 ## sort np.sort(array, axis=-1, kind=None, …) 將array排序並輸出,但array本身不會變,可用變數接 https://numpy.org/devdocs/reference/generated/numpy.sort.html#numpy.sort array.sort(axis=-1, kind=None, …) 將array排序但不會輸出,array本身改變 https://numpy.org/devdocs/reference/generated/numpy.ndarray.sort.html#numpy.ndarray.sort axis:預設-1(最後一軸)為排序方向 kind:有四種排序算法可以選(quicksort, mergesort, heapsort, stable),預設為 quicksort ![](https://i.imgur.com/HM4Pj6y.png) ** 以上若要得到索引排序則將sort改成argsort ## 搜尋 np.searchsorted(升冪array, 要放入的數或list) 輸出後者插入原array之後的索引位置,預設左邊數來第一個(若後者為array則為一個一個元素分別插入,回傳list) np.argmax(array) array.argmax 找出最大值的索引 np.argmin(array) array.argmin 找出最小值的索引 參數axis預設為none,也可輸入表示各軸極值 where(a的條件式) 輸出a裡面符合條件的元素索引,若多維則索引依照各軸分開寫(tuple的形式將數個array包起來,例如[1,2,3],[4,5,6]代表[1,4][2,5][3,6]) https://numpy.org/doc/stable/reference/generated/numpy.where.html np.nonzero(array) array.nonzero 找出非0的索引,呈現方式同where() ## 攤平重塑 array.flatten() 將array變成一維,並更動原值 array.ravel() 將array變成一維,不更動原值 預設皆以row的順序 https://numpy.org/doc/stable/reference/generated/numpy.ndarray.flatten.html https://numpy.org/doc/stable/reference/generated/numpy.ravel.html array.reshape(尺寸) 將array重塑但不更動原值(會輸出結果),形狀錯誤無法產出 array.resize(尺寸) 將array重塑且更動(不會輸出結果),形狀超過部分會補0 ** 尺寸某些部分可用-1讓系統計算 ## 合併 np.concatenate((array1,array2...), axis=0...) 將陣列合併,預設由axis=0的方向,其他方向個數須相同 https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html np.stack((array1,array2...), axis=0...) 維度多1的合併,陣列尺寸都要一樣 np.hstack((array1,array2...)) 水平方向堆疊,維度不變 np.vstack((array1,array2...)) 鉛直方向堆疊,維度不變 https://blog.csdn.net/csdn15698845876/article/details/73380803 ## 切割 np.split((array1,array2...), 切割數或[切割區段]) 預設axis=0的方向切割 np.hsplit((array1,array2...), 切割數或[切割區段]) axis=1方向切割 np.vsplit((array1,array2...), 切割數或[切割區段]) axis=0方向切割 https://blog.csdn.net/miaoyanmm/article/details/80188994 ###### tags: `資料科學馬拉松` `python`