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

为何用NumPy与SciPy计算均值(一阶矩)会得到不同结果?

为什么NumPy均值与SciPy一阶矩结果不同?

这两个函数计算的根本不是同一类统计量:

  • np.mean() 计算的是一阶原点矩,也就是常规的算术平均数,公式为 $\frac{1}{n}\sum_{i=1}^n x_i$。对数组[1,2,3]来说,就是$(1+2+3)/3=2.0$,和输出结果一致。
  • scipy.stats.moment(arr, moment=1) 默认计算的是一阶中心矩,公式为 $\frac{1}{n}\sum_{i=1}^n (x_i - \mu)$,其中$\mu$是数组的均值。对这个例子来说,就是$[(1-2)+(2-2)+(3-2)]/3 = (-1+0+1)/3=0.0$,所以输出为0。

如果想用SciPy得到和NumPy均值一致的结果,只需指定center=False参数来计算原点矩:

print(scipy.stats.moment(arr, moment=1, center=False))  # 输出2.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:35:24