# 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`