python numpy庫np.percentile用法說明
在python中計算一個多維數(shù)組的任意百分比分位數(shù),此處的百分位是從小到大排列,只需用np.percentile即可……
a = range(1,101) #求取a數(shù)列第90%分位的數(shù)值 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數(shù)組 q : float in range of [0,100] (or sequence of floats) Percentile to compute。 要計算的q分位數(shù)。 axis : 那個軸上運算。 keepdims :bool是否保持維度不變。 Examples -------- >>> a = np.array([[10, 7, 4], [3, 2, 1]]) >>> a array([[10, 7, 4], [ 3, 2, 1]]) >>> np.percentile(a, 50) #50%的分位數(shù),就是a里排序之后的中位數(shù) 3.5 >>> np.percentile(a, 50, axis=0) #axis為0,在縱列上求 array([[ 6.5, 4.5, 2.5]]) >>> np.percentile(a, 50, axis=1) #axis為1,在橫行上求 array([ 7., 2.]) >>> np.percentile(a, 50, axis=1, keepdims=True) #keepdims=True保持維度不變 array([[ 7.], [ 2.]])
補充知識:關于np.percentile函數(shù)的自己的理解(我覺得很對)
最近在跑別人baseline的時候看到np.percentile這個函數(shù),之前沒有用過,就跑去官方文檔看了看到底是怎么工作的(官方文檔連接)
行吧,官方文檔給出的例子居然是以50為例(我當然知道這是得到中位數(shù)?。。。。?,但是自己在運行的時候一直不明白下面的結果為什么是5.8.
后來自己琢磨了一下,函數(shù)得到的結果是得到一個數(shù),列表中百分之60的數(shù)小于該數(shù)字。
圖中的列表長度為9,。數(shù)字1所對應的是0%,數(shù)字9對應的是100%,中間有8個間隔。100/8=12.5.
參數(shù)為60,那么60/12.5=4.8,意味著需要4.8個間隔,好的,先跳過4個間隔,現(xiàn)在到達5這個位置,然后往后0.8個間隔,該間隔對應的長度為6-5=1,所以最后得出的結果為5+1*0.8=5.8,和函數(shù)輸出的結果一樣。
主要是自己愛較真,不想了解具體怎么算的話只要記住函數(shù)的統(tǒng)計意義就可以。
另外關于我的解釋中為什么要用“間隔”這種描述,因為我寫的例子中1-9,間隔相鄰數(shù)字的差是一樣的,但是在實際應用中可能不一樣。
以上這篇python numpy庫np.percentile用法說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
使用NumPy進行數(shù)組數(shù)據(jù)處理的示例詳解
NumPy是Python中用于數(shù)值計算的核心包之一,它提供了大量的高效數(shù)組操作函數(shù)和數(shù)學函數(shù),可以支持多維數(shù)組和矩陣運算。本文主要為大家介紹了NumPy進行數(shù)組數(shù)據(jù)處理的具體方法,需要的可以參考一下2023-03-03TensorFlow中關于tf.app.flags命令行參數(shù)解析模塊
這篇文章主要介紹了TensorFlow中關于tf.app.flags命令行參數(shù)解析模塊,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11Python numpy有哪些常用數(shù)據(jù)類型
Numpy提供了兩種基本的對象:ndarray(N-dimensional Array Object)和 ufunc(Universal Function Object)。ndarray是存儲單一數(shù)據(jù)類型的多維數(shù)組,而ufunc則是能夠?qū)?shù)組進行處理的函數(shù)2023-02-02