如何修复:“numpy.float64”对象无法解释为 int


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

 TypeError : 'numpy.float64' object cannot be interpreted as an integer

当您向需要整数的函数提供浮点数时,会发生此错误。

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

如何重现错误

假设我们尝试使用以下 for 循环将不同的数字打印到 NumPy 数组中:

 import numpy as np

#define array of values
data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4])

#use for loop to print out range of values at each index
for i in range(len(data)):
    print (range(data[i]))

TypeError : 'numpy.float64' object cannot be interpreted as an integer

我们收到一个错误,因为range()函数需要一个整数,但 NumPy 数组中的值是浮点数。

如何修复错误

有两种方法可以快速修复此错误:

方法一:使用int()函数

修复此错误的一种方法是简单地用int()包装调用,如下所示:

 import numpy as np

#define array of values
data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4])

#use for loop to print out range of values at each index
for i in range(len(data)):
    print (range(int(data[i])))

range(0, 3)
range(0, 4)
range(0, 5)
range(0, 7)
range(0, 10)
range(0, 11)

使用int()函数,我们将 NumPy 数组中的每个浮点值转换为整数,以避免我们之前遇到的TypeError

方法2:使用.astype(int)函数

修复此错误的另一种方法是首先将 NumPy 数组值转换为整数:

 import numpy as np

#define array of values
data = np. array ([3.3, 4.2, 5.1, 7.7, 10.8, 11.4])

#convert array of floats to array of integers
data_int = data. astype (int)

#use for loop to print out range of values at each index
for i in range(len(data)):
    print (range(data[i]))

range(0, 3)
range(0, 4)
range(0, 5)
range(0, 7)
range(0, 10)
range(0, 11)

通过使用此方法,我们再次避免了TypeError

其他资源

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

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

添加评论

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