You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

numpy percentile采用nearest插值结果与维基定义不符是否为bug?

numpy.percentile与最近秩方法结果差异说明

这不属于numpy的bug,二者结果差异来自百分位数的多种通用计算标准,numpy针对不同标准提供了对应的参数配置。

  • 两种计算逻辑的核心区别
    维基提到的最近秩(nearest-rank)方法采用1起始索引,秩计算公式为n = ceil(p/100 * N),其中N为数组总长度。示例中N=5,计算40百分位时:40/100 * 5 = 2,向上取整为2,对应数组第2个元素20,和维基结果一致。
    numpy的interpolation='nearest'参数采用0起始索引,索引计算公式为idx = round(p/100 * (N - 1))。示例中40/100 * (5-1) = 1.6,四舍五入得到索引2,对应数组第3个元素35,与实际运行结果一致。
  • 匹配最近秩方法的正确用法
    numpy 1.22及以上版本新增了method参数用于指定百分位数计算标准,直接设置method='nearest_rank'即可得到符合维基定义的结果,代码示例如下:
    import numpy as np
    arr = [15, 20, 35, 40, 50]
    p = 40
    r = np.percentile(arr, p, method='nearest_rank')
    print(r) # 输出结果为20
    
  • 设计背景说明
    百分位数不存在唯一的通用计算标准,不同领域有各自沿用的计算规范,学术研究中曾归纳出9种广泛使用的百分位数实现方法。numpy默认逻辑仅对应其中一种,用户可根据需求选择对应参数,不存在计算错误。

内容的提问来源于stack exchange,提问作者caravan eat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:06:02