您好,登錄后才能下訂單哦!
小編這次要給大家分享的是詳解python中numpy庫np.percentile,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
在python中計(jì)算一個(gè)多維數(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。 要計(jì)算的q分位數(shù)。 axis : 那個(gè)軸上運(yùn)算。 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.]])
補(bǔ)充知識(shí):關(guān)于np.percentile函數(shù)的自己的理解(我覺得很對(duì))
最近在跑別人baseline的時(shí)候看到np.percentile這個(gè)函數(shù),之前沒有用過,就跑去官方文檔看了看到底是怎么工作的(官方文檔連接)
行吧,官方文檔給出的例子居然是以50為例(我當(dāng)然知道這是得到中位數(shù)?。。。。?,但是自己在運(yùn)行的時(shí)候一直不明白下面的結(jié)果為什么是5.8.
后來自己琢磨了一下,函數(shù)得到的結(jié)果是得到一個(gè)數(shù),列表中百分之60的數(shù)小于該數(shù)字。
圖中的列表長度為9,。數(shù)字1所對(duì)應(yīng)的是0%,數(shù)字9對(duì)應(yīng)的是100%,中間有8個(gè)間隔。100/8=12.5.
參數(shù)為60,那么60/12.5=4.8,意味著需要4.8個(gè)間隔,好的,先跳過4個(gè)間隔,現(xiàn)在到達(dá)5這個(gè)位置,然后往后0.8個(gè)間隔,該間隔對(duì)應(yīng)的長度為6-5=1,所以最后得出的結(jié)果為5+1*0.8=5.8,和函數(shù)輸出的結(jié)果一樣。
主要是自己愛較真,不想了解具體怎么算的話只要記住函數(shù)的統(tǒng)計(jì)意義就可以。
看完這篇關(guān)于詳解python中numpy庫np.percentile的文章,如果覺得文章內(nèi)容寫得不錯(cuò)的話,可以把它分享出去給更多人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。