为什么要做以下代码示例:
np.array([[1, 2], [2, 3, 4]])
np.array([1.2, "abc"], dtype=float)
…都给出以下错误?
ValueError:使用序列设置数组元素。
原文由 MedicalMath 发布,翻译遵循 CC BY-SA 4.0 许可协议
为什么要做以下代码示例:
np.array([[1, 2], [2, 3, 4]])
np.array([1.2, "abc"], dtype=float)
…都给出以下错误?
ValueError:使用序列设置数组元素。
原文由 MedicalMath 发布,翻译遵循 CC BY-SA 4.0 许可协议
Python 值错误:
ValueError: setting an array element with a sequence.
正如它所说的那样,您正试图将一系列数字塞入一个数字槽中。它可以在各种情况下抛出。
1. 当你传递一个 python 元组或列表被解释为一个 numpy 数组元素时:
import numpy
numpy.array([1,2,3]) #good
numpy.array([1, (2,3)]) #Fail, can't convert a tuple into a numpy
#array element
numpy.mean([5,(6+7)]) #good
numpy.mean([5,tuple(range(2))]) #Fail, can't convert a tuple into a numpy
#array element
def foo():
return 3
numpy.array([2, foo()]) #good
def foo():
return [3,4]
numpy.array([2, foo()]) #Fail, can't convert a list into a numpy
#array element
2. 通过尝试将一个长度 > 1 的 numpy 数组塞进一个 numpy 数组元素中:
x = np.array([1,2,3])
x[0] = np.array([4]) #good
x = np.array([1,2,3])
x[0] = np.array([4,5]) #Fail, can't convert the numpy array to fit
#into a numpy array element
正在创建一个 numpy 数组,而 numpy 不知道如何将多值元组或数组塞入单个元素槽中。它期望你给它的任何东西评估为一个数字,如果不是,Numpy 回应它不知道如何用序列设置数组元素。
原文由 Eric Leschinski 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答3.1k 阅读✓ 已解决
5 回答1.6k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
4 回答1.9k 阅读
3 回答1.7k 阅读
可能原因1:试图创建一个锯齿状数组
您可能正在从一个形状不像多维数组的列表中创建一个数组:
在这些示例中,
numpy.array
的参数包含不同长度的序列。这些将产生此错误消息,因为输入列表的形状不像可以变成多维数组的“盒子”。可能原因2:提供不兼容类型的元素
例如,在
float
类型的数组中提供一个字符串作为元素:如果你真的想要一个包含字符串和浮点数的 NumPy 数组,你可以使用
object
,它允许数组保存任意 Python 对象: