如何修复:只有大小为 1 的数组可以转换为 python 标量
使用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
n.p. 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:无法将 float NaN 转换为 int
如何修复:ValueError:操作数无法与形状一起广播