根据我的理解,numpy 的百分位数计算数据的第 q 个百分位数。
但它究竟是怎么做的呢?
说,给定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。
如果我这样做np.percentile(x, 90),它应该返回8.8,对吗?但它回馈8.9100000000000001。
为什么会有这样的差异?这些差异可以接受吗?
从版本 1.9.0 开始,Numpy 的百分位数函数有一个参数,在文档中interpolation描述如下:
\n\n\n插值:{\xe2\x80\x98线性\xe2\x80\x99,\xe2\x80\x98下\xe2\x80\x99,\xe2\x80\x98更高\xe2\x80\x99,\xe2\x80\x98中点\xe2 \x80\x99,\xe2\x80\x98最近\xe2\x80\x99}
\n\n
\n 此可选参数指定当所需分位数位于两个数据点 i 和 j 之间时要使用的插值方法:\n
\n- 线性:i + (j - i) *fraction,其中fraction是i和j包围的索引的小数部分。
\n- 较低:i.
\n- 较高:j。
\n- 最近的:i 或 j,以最接近的为准。
\n- 中点:(i + j) / 2。
\n
它默认为线性。如果您想8.8从示例中获取信息,请运行:
np.percentile(x, 90, interopolation=\'lower\')\nRun Code Online (Sandbox Code Playgroud)\n