我发现numpy的第50个百分位并不能返回一个完美的意思。为什么是这样?通过定义,第50个百分位应该是平均值。
In [1]: s = [1.3424,4.221124,5.11,2.4432]
In [2]: sum(s)/len(s)
Out[2]: 3.2791810000000003
In [3]: np.percentile(s,50)
Out[3]: 3.3321619999999998
In [15]: s = [1.3424,4.221124,5.11,2.4432]
In [4]: sum(s)/len(s)
Out[4]: 3.2791810000000003
In [5]: np.percentile(s,50)
Out[5]: 3.3321619999999998
答案 0 :(得分:3)
文档说明在q=50
它不返回平均值而是返回中位数:
如果q = 50,则此函数与中位数相同,如果q = 0,则与最小值相同,如果q = 100,则与最大值相同。
请参阅http://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.percentile.html