如何修复:只有大小为1的数组可以被转换为Python标量

1,173 阅读1分钟

在使用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:操作数不能与形状一起广播