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

如何基于频数数据计算中位数(不使用np.median,支持Python与NumPy)

基于频数数组计算中位数的实现方案

先澄清你对np.repeat的误解

你提到的np.repeat(array, repeats)完全支持按对应频数重复每个元素,并非只能固定次数。当repeats是一个和输入数组长度相同的数组时,函数会把array的第i个元素重复repeats[i]次,正好满足你的需求。


一、NumPy实现方案

直接用np.repeat就能快速重建原始数据集,之后调用你的中位数计算函数即可:

import numpy as np

# 示例输入
severities = np.arange(7)
with_helmet = np.array([248, 58, 11, 3, 2, 8, 1])

# 按对应频数重建原始数组
reconstructed_data = np.repeat(severities, with_helmet)

# 调用你已有的中位数函数,或者直接用numpy内置的中位数计算
# median = your_median_function(reconstructed_data)
median = np.median(reconstructed_data)
print(median)  # 输出结果为0.0

二、基础Python实现方案

如果不用NumPy,用原生Python也能轻松实现:

# 示例输入
severities = list(range(7))
with_helmet = [248, 58, 11, 3, 2, 8, 1]

# 方式1:循环extend
reconstructed_data = []
for value, count in zip(severities, with_helmet):
    reconstructed_data.extend([value] * count)

# 方式2:更简洁的列表推导式
# reconstructed_data = [val for val, cnt in zip(severities, with_helmet) for _ in range(cnt)]

# 调用你已有的中位数计算函数
# median = your_median_function(reconstructed_data)

内容的提问来源于stack exchange,提问作者Dan Öz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:21:09