为什么 numpy 的第 50 个百分位数不返回平均值?



我发现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

文档说明,在q=50,它返回的不是平均值,而是中位数:

此函数与q=50时的中位数相同,与q=0时的最小值相同,与q=100时的最大值相同。

见http://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.percentile.html

相关内容

最新更新