numpy 的百分位函数究竟做了什么?

Jac*_*ale 5 python numpy

根据我的理解,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


为什么会有这样的差异?这些差异可以接受吗?

Car*_*ten 4

从版本 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 此可选参数指定当所需分位数位于两个数据点 i 和 j 之间时要使用的插值方法:

\n\n
    \n
  • 线性:i + (j - i) *fraction,其中fraction是i和j包围的索引的小数部分。
  • \n
  • 较低:i.
  • \n
  • 较高:j。
  • \n
  • 最近的:i 或 j,以最接近的为准。
  • \n
  • 中点:(i + j) / 2。
  • \n
\n
\n\n

它默认为线性。如果您想8.8从示例中获取信息,请运行:

\n\n
np.percentile(x, 90, interopolation=\'lower\')\n
Run Code Online (Sandbox Code Playgroud)\n