根据我的理解,numpy's percentile计算数据的qth百分位数。
但它到底是怎么做的呢?
比如,给定x = np.array([1.3, 1.7, 2.4, 2.8, 3.5, 5.6, 6.6, 7.7, 8.8, 9.9])
(10个浮在里面)。
如果我这样做了,它就会回报我。
如果我这样做,它应该返回np.percentile(x, 100)
,对吗但它会回报9.9000000000000004
。
为什么会有这样的差异这些差异可以接受吗?
最佳答案
自1.9.0版以来,numpy的percentile函数有一个interpolation
参数,该参数的描述如下:
插值:{'linear','lower','higher','midpoint','nearest'}
当所需分位数位于两个数据点i和j之间时,此可选参数指定要使用的插值方法:
线性:i+(j-i)*分数,其中分数是由i和j包围的索引的分数部分。
下:I.
上级:J.
最近的:i或j,以最近的为准。
中点:(i+j)/2。
默认为线性如果要从示例中获取8.8
,请运行:
np.percentile(x, 90, interopolation='lower')