为什么要做下面的代码示例:

np.array([[1, 2], [2, 3, 4]])
np.array([1.2, "abc"], dtype=float)

...都给出以下错误?

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


当前回答

在我的例子中,我有一个嵌套的列表作为我想要用作输入的系列。

第一次检查:如果

df['nestedList'][0]

输出一个列表如[1,2,3],你有一个嵌套的列表。

然后检查当您更改输入df['nestedList'][0]时是否仍然得到错误。

然后,下一步可能是将所有嵌套列表连接到一个非嵌套列表,使用

[item for sublist in df['nestedList'] for item in sublist]

这种对嵌套列表的扁平化是从如何从列表的列表中制作一个扁平化列表中借来的。

其他回答

在我的例子中,问题在于数据框架X[]的散点图:

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)

在我的例子中,我有一个嵌套的列表作为我想要用作输入的系列。

第一次检查:如果

df['nestedList'][0]

输出一个列表如[1,2,3],你有一个嵌套的列表。

然后检查当您更改输入df['nestedList'][0]时是否仍然得到错误。

然后,下一步可能是将所有嵌套列表连接到一个非嵌套列表,使用

[item for sublist in df['nestedList'] for item in sublist]

这种对嵌套列表的扁平化是从如何从列表的列表中制作一个扁平化列表中借来的。

对我来说,问题是另一个。我试图将int类型的列表转换为数组。问题是有一个列表与其他列表的长度不同。如果你想证明它,你必须做到:

print([i for i,x in enumerate(list) if len(x) != 560])

在我的例子中,长度参考是560。

在我的例子中,我在Tensorflow中得到了这个错误,原因是我试图提供一个具有不同长度或序列的数组:

例子:

import tensorflow as tf

input_x = tf.placeholder(tf.int32,[None,None])



word_embedding = tf.get_variable('embeddin',shape=[len(vocab_),110],dtype=tf.float32,initializer=tf.random_uniform_initializer(-0.01,0.01))

embedding_look=tf.nn.embedding_lookup(word_embedding,input_x)

with tf.Session() as tt:
    tt.run(tf.global_variables_initializer())

    a,b=tt.run([word_embedding,embedding_look],feed_dict={input_x:example_array})
    print(b)

如果我的数组是

example_array = [[1,2,3],[1,2]]

然后我将得到错误:

ValueError: setting an array element with a sequence.

但如果我做填充

example_array = [[1,2,3],[1,2,0]]

现在起作用了。

这个错误是因为np的dtype参数。数组函数指定数组中元素的数据类型,并且只能设置为与所有元素兼容的单一数据类型。值"abc"不是有效的浮点数,因此试图将其转换为浮点数会导致ValueError。为了避免此错误,可以从列表中删除string元素,或者选择可以同时处理浮点值和字符串值的不同数据类型,例如object。

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