np.percentile獲取中位數、百分位數


給定一個遞增數組a,求它的中位數。
np.percentile(a,50)
中位數就是50%處的數字,也可以獲得0%、100%處的數字,0%處的數字就是第一個數字,100%處的數字就是最后一個數字。1/(len(a)-1)*100處的數字就是第2個數字,2/(len(a)-1)*100處的數字就是第3個數字,以此類推。

import numpy as np

a = np.array([1, 2, 3, 6, 7, 11, 13])
for ind, v in enumerate(a):
    print("index", ind, "value", v, "percentile", ind / (len(a) - 1) * 100)
    percen = np.percentile(a, ind / (len(a) - 1) * 100)
    assert np.abs(percen - v) < 1e-3, "%s!=%s" % (percen, v)

輸出為

index 0 value 1 percentile 0.0
index 1 value 2 percentile 16.666666666666664
index 2 value 3 percentile 33.33333333333333
index 3 value 6 percentile 50.0
index 4 value 7 percentile 66.66666666666666
index 5 value 11 percentile 83.33333333333334
index 6 value 13 percentile 100.0

np.percentile()函數的作用就是求百分位數,從而能夠知道數字大致的分布。

percentile函數原型為:
numpy.percentile(a, q, axis=None, out=None, overwrite_input=False)

  • a是原始數組,可以是多維數組
  • q為0~100之間的浮點數或者浮點數組,若為浮點數組表示批量查詢
  • axis:在a的哪個軸上計算百分位數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM