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

使用嵌套循环计算残差平方和时遇TypeError:numpy.float64不可迭代

残差平方和计算报错问题解答

报错信息

File "...", line 13, in <module>
    for y in values_subtraction_mean:
TypeError: 'numpy.float64' object is not iterable

错误原因

你犯了两个核心逻辑错误:

  1. 把单个数值当成可迭代对象:在第一个for x in values循环里,每次x是列表里的单个元素,values_subtraction_mean = x - mean得到的是单个浮点数(比如第一次循环得到2.2),而非你预期的包含所有差值的列表。所以你试图用for y in values_subtraction_mean遍历它时,Python会报错——浮点数不能被遍历。
  2. 平方计算错误:你写的math.sqrt(y)是求平方根,而残差平方和需要的是差值的平方,应该用y ** 2或者math.pow(y, 2)。另外sum()需要传入可迭代对象,直接传单个数值也会报错。

修正后的代码

基础循环实现(符合你想用循环的需求)

import math

values = [5, 2, 3, 4, 0]
# 手动计算均值,避免和numpy的mean函数重名
mean_val = sum(values) / len(values)
residual_sum = 0

# 遍历每个值,计算差值平方并累加
for x in values:
    diff = x - mean_val
    residual_sum += diff ** 2

print(residual_sum)  # 输出:14.8

numpy简化实现(更高效)

import numpy as np

values = np.array([5, 2, 3, 4, 0])
mean_val = np.mean(values)
residual_sum = np.sum((values - mean_val) ** 2)

print(residual_sum)  # 输出:14.8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:16:10