# Numpy #4 統計運算 ### 極值、排序 一個一個元素比較,回傳指定值,可能可容忍不同形狀 np.maximum(a,b) 最大值 np.minimum(a,b) 最小值 有nan就回傳nan np.fmax(a,b) 最大值 np.fmin(a,b) 最小值,兩個nan才會回傳nan np.nanmax(a) 該陣列最大值 np.nanmin(a) 該陣列最小值,忽略nan 亦可指定軸項比較axis=n(預設none) 以及是否保留維度keepdims=(預設<no value>) 全部都是nan會出錯 np.percentile(a,分位數q) 百分位數,有nan就會回傳nan np.nanpercentile(a,分位數q) 百分位數,忽略nan *以上百分位數0~100之間 np.quantile(a,分位數q) 分位數,有nan就會回傳nan np.nanquantile(a,分位數q) 分位數,忽略nan *以上分位數0~1之間 若想一次知道很多分位數,q也可以用一維陣列表示 可指定軸項比較axis=n(預設None) 可指定是否保留維度keepdims=(預設<no value>) ### 一維數據分析 (以下有nan表示忽略nan,沒有表示有nan就回傳nan) np.mean(a) np.nanmean(a) 平均數 np.median(a) np.nanmedian(a) 中位數 可指定軸項比較axis=n(預設None) 平均數可指定型態dtype=(預設None,即整數就用float64,浮點數就用輸入的型態) 可指定是否保留維度keepdims=(預設<no value>) np.average(a) 平均數,可以輸入權重 可指定軸項比較axis=n(預設None) 可指定權重weight=[...](預設None) np.std(a) np.nanstd(a) 標準差 np.var(a) np.nanvar(a) 變異數 可指定軸項比較axis=n(預設None) 可指定型態dtype=(預設None,即整數就用float64,浮點數就用輸入的型態) 可指定自由度ddof=(預設0,樣本標準差/變異數的話就是1) 可指定是否保留維度keepdims=(預設<no value>) ### 二維數據分析 np.corrcoef(a) 相關係數 可指定另一組陣列y=(預設None) 可指定型態dtype=(預設None,即整數就用float64,浮點數就用輸入的型態) 可指定rowvar=(預設True,表示用每個row為一個變數) 輸出結果會是某個陣列,裡面的[a][b]代表兩行變數的相關係數 (因此[a][a]=1,[a][b]=[b][a]) np.correlate(a, b) 互相關 可指定mode=''(回傳序列形狀不同) valid:max(M, N)(預設) full:(N+M-1,) same:max(M, N) - min(M, N) + 1 (N為第一序列a的元素數,M為第二序列的元素數) np.cov(a) 共變異數 可指定額外資料y=(預設None) 可指定rowvar=(預設True,表示用每個row為一個變數) 可指定bias=(預設False,表示樣本共變異數) 可指定自由度ddof=(預設0) 可指定頻率加權fweights=(預設None) 可指定觀測向量加權aweights=(預設None) ### Hisrogram直方圖 主要是將資料分類計算個數,得到分佈圖/分佈關係 np.histogram(a, bins=k) k為分組方式,可以是auto、分組數、一維序列.... 可指定range=(預設是最大跟最小值) 可指定weights=(預設None,要的話要跟a一樣尺寸) 可指定density=(預設False,輸出次數;Ture則輸出相對次數(比例)) 輸出會是一個二維陣列,包含count以及分組 np.unique(a) 可指定return_counts= (預設True) 一樣會輸出二維陣列,包含count以及值,這裡比較是計算每個數值出現的次數,沒有分組功能 ### 資料離散化 np.digitize(x, bins=k) k為一維陣列,代表資料要如何切,可遞增也可遞減 可指定right=(宇社False代表包含右邊界不含右邊界,反之代表不包含右邊界(右邊界都是指比較大的那邊,不管是遞增還是遞減)) 輸出為一個陣列,代表各自被分到那一組 例如[1.2, 2.5, 7, 10.3] bins=[0,6,7,10,11] right=True 會輸出[1, 1, 2, 4] (因為right=True所以7被分到6~7這組,也就是第二組) ###### tags: `資料分析` `numpy` `python`