TypeError: numpy.float64 object is not iterable

TypeError: numpy.float64 object is not iterable

运行 Python 脚本时出现错误:

使用代码

arr = np.array([[3, 4, 5], [5, 6, 7], [2, 3, 4]])


total = sum(sum(arr))

mean = sum(sum(arr))/(3*3)

for i in arr :
    vr= i - mean
    for med in vr**2 :             
        print(sum(med))

错误原因

您遇到此错误:

TypeError: 'numpy.float64' object is not iterable

您正在使用 for-loop 迭代假定数组:

    for med in vr**2 :             

表达式vr**2不是数组,而是原始的float

因此你得到这个错误。

解决方案

去掉第二个for-loop:

import numpy as np

arr = np.array([[3, 4, 5], [5, 6, 7], [2, 3, 4]])

total = sum(sum(arr))
mean = sum(sum(arr))/(3*3)

for i in arr :
    vr = i - mean
    print(sum(vr**2))

每个总和输出 3 行:

2
14
5

将此代码尝试为 demo in IDEone


建议: 始终 post error-outputs 作为问题 body 中的纯文本(不仅在标题中,而不是图像中)。这样我们就可以复制粘贴了。

med 是一个数字(浮点数),因此你不能计算它的总和(它的总和就是它本身)。此外,使用 Numpy 的要点是避免循环并一次进行数组计算。像这样:

arr = np.array([[3, 4, 5], [5, 6, 7], [2, 3, 4]])

total = arr.sum()
mean = total/arr.size #equivalent of total=arr.mean()
vr = ((arr - mean)**2).sum() #equivalent of var=np.var(arr)*arr.size