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

Python不使用numpy如何计算标准差?自定义实现结果异常排查

问题排查

你的代码存在两处核心逻辑错误:

  • 计算平方差的循环逻辑错误:第一次遍历数组元素时,就把原数组变量覆盖为单个元素的平方差值,并且直接return,后续所有代码都不会执行,这是你输出单个数值而非正确标准差的直接原因。
  • 求和循环逻辑错误:即使前面的代码能执行到求和步骤,循环里的return也会在第一次累加后直接返回结果,无法完成所有平方差的求和计算。
修正后可运行代码
import math

speeds = [86,87,88,86,87,85,86]

def get_mean(array):
    sum_val = 0
    for i in array:
        sum_val += i
    return sum_val / len(array)

def get_std_dev(array):
    mean = get_mean(array)
    # 存储所有元素与均值的平方差
    sqr_diff_list = []
    for i in array:
        sqr_diff_list.append((i - mean) ** 2)
    # 计算平方差总和
    sum_sqr_diff = 0
    for diff in sqr_diff_list:
        sum_sqr_diff += diff
    # 按总体标准差计算,和numpy.std默认逻辑对齐
    variance = sum_sqr_diff / len(array)
    return math.sqrt(variance)

std_dev = get_std_dev(speeds)
print(std_dev)
结果验证

运行修正后代码输出结果为0.9035079029052513,和你用numpy计算得到的结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:24:04