如何修复:“numpy.float64”对象不可迭代


使用 NumPy 时可能遇到的错误是:

 TypeError : 'numpy.float64' object is not iterable

当您尝试在 NumPy 中对浮点值迭代执行迭代操作时,会出现此错误,而这是不可能的。

以下示例展示了如何在实践中解决此错误。

如何重现错误

假设我们有以下 NumPy 数组:

 import numpy as np

#define array of data
data = np. array ([1.3, 1.5, 1.6, 1.9, 2.2, 2.5])

#display array of data
print (data)

[1.3 1.5 1.6 1.9 2.2 2.5]

现在假设我们尝试打印数组中每个值的总和:

 #attempt to print the sum of every value
for i in data:
    print (sum(i))

TypeError : 'numpy.float64' object is not iterable

我们收到错误,因为我们尝试对数组中的每个单独的浮点值进行迭代(取值的总和)。

如何修复错误

我们可以通过两种方式避免这个错误:

1. 对数组中的每个值执行非迭代操作。

例如,我们可以打印数组中的每个值:

 #print every value in array
for i in data:
    print (i)

1.3
1.5
1.6
1.9
2.2
2.5

我们没有收到错误,因为我们没有尝试迭代每个值。

2. 对多维数组执行迭代运算。

我们还可以通过对多维数组执行迭代操作来避免错误:

 #create multi-dimensional array
data2 = np. array ([[1.3, 1.5], [1.6, 1.9], [2.2, 2.5]])

#print sum of each element in array
for i in data2:
    print (sum(i))

2.8
3.5
4.7

我们不会收到错误,因为在多维数组上使用sum()函数是有意义的。

特别是,以下是 NumPy 计算总和值的方式:

  • 1.3 + 1.5 = 2.8
  • 1.6 + 1.9 = 3.5
  • 2.2 + 2.5 = 4.7

其他资源

以下教程解释了如何修复 Python 中的其他常见错误:

如何修复 Pandas 中的 KeyError
如何修复:ValueError:无法将 float NaN 转换为 int
如何修复:ValueError:操作数无法与形状一起广播

添加评论

您的邮箱地址不会被公开。 必填项已用 * 标注