1. 程式人生 > 程式設計 >python numpy庫np.percentile用法說明

python numpy庫np.percentile用法說明

在python中計算一個多維陣列的任意百分比分位數,此處的百分位是從小到大排列,只需用np.percentile即可……

a = range(1,101)
#求取a數列第90%分位的數值
np.percentile(a,90)
Out[5]: 90.10000000000001

a = range(101,1,-1)
#百分位是從小到大排列
np.percentile(a,90)
Out[7]: 91.10000000000001

詳看官方文件

numpy.percentile
Parameters
 ----------
 a : np陣列
 q : float in range of [0,100] (or sequence of floats)
  Percentile to compute。
  要計算的q分位數。
 axis : 那個軸上運算。
 keepdims :bool是否保持維度不變。

 Examples
 --------
 >>> a = np.array([[10,7,4],[3,2,1]])
 >>> a
 array([[10,[ 3,1]])
 >>> np.percentile(a,50) #50%的分位數,就是a裡排序之後的中位數
 3.5
 >>> np.percentile(a,50,axis=0) #axis為0,在縱列上求
 array([[ 6.5,4.5,2.5]])
 >>> np.percentile(a,axis=1) #axis為1,在橫行上求
 array([ 7.,2.])
 >>> np.percentile(a,axis=1,keepdims=True) #keepdims=True保持維度不變
 array([[ 7.],[ 2.]])

補充知識:關於np.percentile函式的自己的理解(我覺得很對)

最近在跑別人baseline的時候看到np.percentile這個函式,之前沒有用過,就跑去官方文件看了看到底是怎麼工作的(官方文件連線)

行吧,官方文件給出的例子居然是以50為例(我當然知道這是得到中位數啊!!!),但是自己在執行的時候一直不明白下面的結果為什麼是5.8.

python numpy庫np.percentile用法說明

後來自己琢磨了一下,函式得到的結果是得到一個數,列表中百分之60的數小於該數字。

圖中的列表長度為9,。數字1所對應的是0%,數字9對應的是100%,中間有8個間隔。100/8=12.5.

引數為60,那麼60/12.5=4.8,意味著需要4.8個間隔,好的,先跳過4個間隔,現在到達5這個位置,然後往後0.8個間隔,該間隔對應的長度為6-5=1,所以最後得出的結果為5+1*0.8=5.8,和函式輸出的結果一樣。

主要是自己愛較真,不想了解具體怎麼算的話只要記住函式的統計意義就可以。

另外關於我的解釋中為什麼要用“間隔”這種描述,因為我寫的例子中1-9,間隔相鄰數字的差是一樣的,但是在實際應用中可能不一樣。

以上這篇python numpy庫np.percentile用法說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。