我有两个清单,
list_a
list_b
其形状为[10,50]和[40,50] 我尝试将它们组合成一个[50,50]数组,从以下代码开始(为便于阅读而编辑)
array_a=np.array(list_a)
array_b=np.array(list_b)
array_c=np.concatenate(array_a,array_b)
但它一直给我一个错误,说
" TypeError:只有length-1数组可以转换为Python标量"
这里的问题是什么,我该如何解决?这个错误不是很有用......
答案 0 :(得分:2)
np.concatenate
期望一个元组作为参数,即它应该是
array_c=np.concatenate((array_a,array_b))
第一个参数是任意数量的数组的元组,第二个参数(在您的情况下为array_b
)告诉concatenate
它应该在哪个轴上运行。
答案 1 :(得分:1)
这里的问题是np.concatenate
期望第一个参数的可迭代序列的类数组对象。这里只需要array_a
作为第一个参数。它将array_b
作为第二个参数,它指定要连接的数组轴。由于此参数需要类似于整数,因此它尝试将array_b
转换为整数,但由于它包含多个项目而失败。因此出现此错误消息。
要解决它,你需要将两个数组包装在一个可迭代的元组中,如:元组:
cc=np.concatenate((array_a,array_b))
这导致两个数组作为函数的第一个参数传递。 (编辑:在列表中包装也有效,即concatenate([array_a,array_b])
。尚未尝试其他形式。)
在您的示例中,这将起作用,因为第二个参数默认为0
,这意味着数组在第一个维度中可以具有不同的长度(第零个索引维度)。对您而言,这些长度为10
和40
,而另一个维度为50
。如果你的数组维度相反,那么它们现在是[50,10]
和[50,40]
,则需要将轴设置为第二维(索引1
),如下所示:
cc=np.concatenate((array_a,array_b),1)