給定一個遞增數組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的哪個軸上計算百分位數