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

为何numpy.quantile计算0.75分位数返回49.75而非预期的55?

为什么numpy.quantile计算0.75分位数的结果和手动计算不同?

你的手动计算用的是**(n+1)*q的分位数位置定义,但numpy的quantile函数默认使用线性插值**的计算方法(对应method='linear'),这是分位数的两种不同定义,所以结果存在差异。

numpy默认方法的计算过程

你的数据集排序后为[13, 21, 21, 40, 42, 48, 55, 72],共8个元素(n=8)。numpy默认的分位数位置公式为:

i = (n - 1) * q

代入q=0.75计算:

i = (8-1)*0.75 = 5.25

这个位置对应排序数组的第6个元素(索引5,值48)和第7个元素(索引6,值55)之间的线性插值:

48 + (55 - 48) * (5.25 - 5) = 48 + 7*0.25 = 49.75

这就是numpy返回的结果。

匹配你手动计算的方法

你采用的(n+1)*q=6.75后取第7个元素的逻辑,对应numpy的method='upper'或method='weibull'参数。运行以下代码就能得到和你手动计算一致的结果:

import numpy as np

values = [13, 21, 21, 40, 42, 48, 55, 72]
print(np.quantile(values, 0.75, method='upper'))  # 输出 55.0

补充:分位数的多种定义

分位数没有统一的标准计算方式,不同工具、领域会采用不同规则。numpy的quantile函数提供了9种method选项,常见的包括:

  • linear:默认,线性插值
  • upper:取大于等于分位数的最小元素
  • weibull:基于(n+1)*q的位置计算
  • lower:取小于等于分位数的最大元素

你可以根据实际需求选择对应的计算方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:10:27