ValueError: setting an array element with a sequence.
意思正如它所说的,你试图将一个数字序列塞进一个数字槽中。它可以在各种情况下抛出。
1.当您传递要解释为NumPy数组元素的python数组或列表时:
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的Numy数组长度塞入Numy数组元素:
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
ax.scatter(X[:,0],X[:,1],c=colors,
cmap=CMAP, edgecolor='k', s=40) #c=y[:,0],
# ValueError: setting an array element with a sequence.
# Fix with .toarray():
colors = 'br'
y = label_binarize(y, classes=['Irrelevant','Relevant'])
ax.scatter(X[:,0].toarray(),X[:,1].toarray(),c=colors,
cmap=CMAP, edgecolor='k', s=40)
import numpy as np
# arr1 = np.array([[10, 20.], [30], [40]], dtype=np.float32) # error
arr2 = np.array([[10, 20.], [30], [40]]) # OK, and the dtype is object
arr3 = np.array([[10, 20.], 'hello']) # OK, and the dtype is also object
8条答案
按热度按时间mzaanser1#
可能原因一:尝试创建交错数组
您可能正在使用形状不像多维数组的列表创建数组:
在这些示例中,
numpy.array
的参数包含不同长度的序列。这将产生此错误消息,因为输入列表的形状不像可以转换为多维数组的“框”。可能原因二:提供不兼容类型的元素
例如,在
float
类型的数组中提供一个字符串作为元素:如果您确实希望拥有同时包含字符串和浮点数的NumPy数组,则可以使用dtype
object
,它允许数组包含任意的Python对象:vmjh9lq92#
The PythonValueError:
意思正如它所说的,你试图将一个数字序列塞进一个数字槽中。它可以在各种情况下抛出。
1.当您传递要解释为NumPy数组元素的python数组或列表时:
2.尝试将一个大于1的Numy数组长度塞入Numy数组元素:
一个Numy数组正在被创建,而NumPy不知道如何将多值元组或数组塞进单元素槽中。它希望您给它的值都是单个数字,如果不是这样,Numpy会回应说它不知道如何用序列设置数组元素。
ibrsph3r3#
在我的例子中,我在TensorFlow中收到了这个错误,原因是我试图向具有不同长度或序列的数组提供数据:
示例:
如果我的数组是:
然后,我将得到错误:
但如果我填上填充物:
现在它起作用了。
vltsax254#
对于那些在Numpy遇到类似问题的人来说,一个非常简单的解决方案是:
在定义为其赋值的数组时定义
dtype=object
。例如:dsekswqp5#
对我来说,这个问题是另一个问题。我正在尝试将int列表的列表转换为数组。问题是,有一份清单的长度与其他清单不同。如果你想证明这一点,你必须做:
在我的例子中,长度参考是560。
dba5bblo6#
在我的例子中,问题出在 Dataframe X[]的散点图上:
yrwegjxp7#
当形状不规则或元素具有不同的数据类型时,传递给np数组的
dtype
参数只能是object
。``
tpgth1q78#
在我的例子中,我有一个嵌套列表作为我想要用作输入的序列。
第一次检查:如果
输出一个类似
[1,2,3]
的列表,您就得到了一个嵌套列表。然后检查更改为输入
df['nestedList'][0]
时是否仍出现错误。然后,您的下一步可能是将所有嵌套列表连接成一个非嵌套列表,使用
嵌套列表的这种扁平化是从How to make a flat list out of list of lists?借用的。