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

为何numpy与scipy.stats计算的标准差结果不一致?求解答

numpy与scipy.stats标准差计算差异的原因

两者的差异核心在于计算时使用的除数不同:

  • numpy.std() 默认计算的是总体标准差,公式中除以样本总数 N(你的示例里是20)。
  • scipy.stats.tstd() 计算的是样本标准差,公式中除以 N-1(你的示例里是19),这是为了对总体方差做无偏估计。

拿你的示例验证:
数组 ar = np.arange(20) 的均值是9.5,所有元素与均值的平方和为665.0:

  • numpy计算:sqrt(665 / 20) = sqrt(33.25) ≈ 5.76628,和输出一致。
  • scipy计算:sqrt(665 / 19) = sqrt(35) ≈ 5.91608,也和输出匹配。

如果想让numpy得到和scipy一样的结果,只需设置ddof=1参数:

print(np.std(ar, ddof=1))  # 输出会是5.916079783099616

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:35:39