在使用Python时,你可能遇到的一个错误是:
TypeError: only size-1 arrays can be converted to Python scalars
这个错误最常发生在你试图使用np.int()将一个 NumPy 的浮动值数组转换为一个整数值数组的时候。
然而,这个函数只接受一个单一的值,而不是一个数组的值。
相反,你应该使用**x.astype(int)**将一个NumPy的浮动值数组转换成一个整数值数组,因为这个函数能够接受一个数组。
下面的例子显示了如何在实践中解决这个错误。
如何重现该错误
假设我们创建了以下的NumPy浮点数数组:
import numpy as np
#create NumPy array of float values
x = np.array([3, 4.5, 6, 7.7, 9.2, 10, 12, 14.1, 15])
现在假设我们试图将这个浮动值数组转换为一个整数值数组:
#attempt to convert array to integer values
np.int(x)
TypeError: only size-1 arrays can be converted to Python scalars
我们会收到一个TypeError,因为**np.int()**函数只接受单个值,而不是一个数组的值。
如何修复这个错误
为了将NumPy的浮动值数组转换为整数值,我们可以改用以下代码:
#convert array of float values to integer values
x.astype(int)
array([ 3, 4, 6, 7, 9, 10, 12, 14, 15])
注意,数组的值已经被转换为整数,我们没有收到任何错误,因为**astype()**函数能够处理数组的值。
注意:你可以在这里找到astype()函数的完整文档。
其他资源
下面的教程解释了如何修复Python中的其他常见错误:
如何修复Pandas中的KeyError
如何修复ValueError: 无法将浮点数NaN转换为整数
如何修复ValueError:操作数不能与形状一起广播