ValueError:使用序列设置数组元素

新手上路,请多包涵

为什么要做以下代码示例:

 np.array([[1, 2], [2, 3, 4]])

 np.array([1.2, "abc"], dtype=float)

…都给出以下错误?

ValueError:使用序列设置数组元素。

原文由 MedicalMath 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

可能原因1:试图创建一个锯齿状数组

您可能正在从一个形状不像多维数组的列表中创建一个数组:

 numpy.array([[1, 2], [2, 3, 4]])         # wrong!

 numpy.array([[1, 2], [2, [3, 4]]])       # wrong!

在这些示例中, numpy.array 的参数包含不同长度的序列。这些将产生此错误消息,因为输入列表的形状不像可以变成多维数组的“盒子”。

可能原因2:提供不兼容类型的元素

例如,在 float 类型的数组中提供一个字符串作为元素:

 numpy.array([1.2, "abc"], dtype=float)   # wrong!

如果你真的想要一个包含字符串和浮点数的 NumPy 数组,你可以使用 object ,它允许数组保存任意 Python 对象:

 numpy.array([1.2, "abc"], dtype=object)

原文由 Sven Marnach 发布,翻译遵循 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏