百分位数的计算原理--NumPy数组实现

引入:

学习Python的NumPy科学计算类库的时候遇到计算百分位数,使用NumPy实现的代码很简单,直接调用就行,如下所示:

import numpy as np
a = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(np.percentile(a, 50))
# 结果:5.0
print(np.percentile(a, 50, axis=0))
# 跨行(axis=0)结果:[4. 5. 6.]
print(np.percentile(a, 50, axis=1))
# 跨列(axis=1)结果:[2. 5. 8.]
print(np.percentile(a,30))
# 结果:3.4

疑问

最后的计算30的百分位数3.4是怎样得到的呢?就想了解一下计算原理,百度一下后,总结下个人理解

原理

计算公式:①(n−1)∗p=i+j;②result = (1−j)∗arr[i]+j∗arr[i+1]
n:数组的个数:1, 2, 3, 4, 5, 6, 7, 8, 9 ,总共9个,n=9;
p: 需要计算的百分位数,这里是30%;
i:是计算后的数值的整数部分,这里计算左边(9-1)∗ 0.3 = 2.4, i = 2;
j:是计算后的小数部分,j = 0.4;
所以最后的结果为:
result = (1−j)∗arr[i]+j∗arr[i+1] = (1 - 0.4)× arr[2] + 0.4 x arr[2+1]
= 0.6 x 3 + 0.4 x 4
= 3.4

供参考,不对的请指出哈!

你可能感兴趣的:(NumPy)