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

如何在Python中计算给定概率分布的第n个百分位数

对应问题解答

你需求里的distr是离散随机变量的概率质量函数(PMF),要计算的是累积分布(CDF)首次超过目标百分位的取值下标,用NumPy的基础函数就能快速实现,不需要额外依赖第三方库。

实现代码

import numpy as np

def do_some_magic(distr, percentile):
    # 将输入的百分位转换为0-1区间的概率值
    target = percentile / 100
    # 计算概率分布对应的累积分布
    cdf = np.cumsum(distr)
    # 返回第一个累积值大于等于目标概率的下标
    return np.searchsorted(cdf, target)

测试验证

和你给出的示例输出完全一致:

distr = [.2, .6, .2]
print(do_some_magic(distr, 50))  # 输出 1

distr = [.1, .1, .6, .2]
print(do_some_magic(distr, 50))  # 输出 2

扩展说明

  • 如果你是要计算已有样本数组的百分位数,可以直接调用NumPy的np.percentile函数,传入样本数组和目标百分位即可,该函数支持自定义插值规则适配不同的分位数计算标准。
  • 如果你使用的是scipy内置的标准概率分布(比如正态分布、泊松分布等),可以直接调用分布对象的ppf方法(百分位点函数),传入0-1区间的目标概率即可直接得到对应分位数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:06:02