如何修复:“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:操作数无法与形状一起广播