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

如何基于数值计数(直方图+分箱)高效计算方差或标准差

直方图分箱数据的高效方差计算方案

核心实现思路

直接基于直方图计数和分箱值做加权统计即可,完全不需要重建原始数组,时间复杂度仅和分箱数量成正比,和原始数据总规模无关,是当前场景下的最优方案。
该方案基于方差的数学拆解公式实现:

总体方差 = 数据平方的加权平均值 - (数据加权平均值)²
其中权重为每个分箱对应的计数,分箱取值直接使用给定的bins数组元素即可。

代码实现

import numpy as np

# 给定的直方图和分箱数据
hist = np.array([1,1,2,1,2])
bins = np.array([0,1,2,3,4])

# 计算总样本量
n = hist.sum()
# 计算加权均值
mean = (hist * bins).sum() / n
# 计算平方的加权均值
mean_sq = (hist * bins ** 2).sum() / n
# 计算总体方差,和np.var默认参数ddof=0结果完全一致
var = mean_sq - mean ** 2

# 如果需要计算样本方差(对应np.var的ddof=1参数),调整分母即可
# var_sample = (hist * (bins - mean) **2).sum() / (n -1)

上述代码计算得到的结果和重建数组后调用np.var的结果完全一致,但性能优势显著:

  • 当单分箱计数极大、原始数据总规模远大于分箱数时,该方法内存占用和计算耗时都会比重建数组的方案低几个数量级,不会产生大量重复元素的内存开销
  • 无需额外构造原始数组的操作,没有冗余的计算步骤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:57:01