我希望连接以下数组:
a=np.array([[1,2],[1],[2,3,4]])
b=np.array([[20,2]])
np.concatenate((a,b),axis=0)
但是我收到以下错误:
ValueError Traceback (most recent call last)
<ipython-input-40-42253341965b> in <module>()
----> 1 np.concatenate((a,b),axis=0)
ValueError: all the input arrays must have same number of dimensions
我期待答案是[[1,2],[1],[2,3,4],[20,2]]
。如果b=np.array([20,2])
代替连接工作正常,除了我得到答案:[[1,2],[1],[2,3,4],20,2]
答案 0 :(得分:3)
检查a
的dtype,ndim和形状:您会发现它们分别是numpy.object
,1和(3,)
。这是因为数组a
包含不同长度的列表,因此每个列表都被视为一个对象,而a
是一维对象数组。我不知道你的目标是什么,但是如果你希望a
的ndim为2,你需要确保所有列表都有相同的长度。
当然,b
的ndim为2,因为它只包含一个(嵌套)列表,这将总是产生一个规则的n维数组。
错误信息显而易见:您正在尝试连接两个具有不同维度的阵列:这不会起作用。
要获得您正在寻找的答案,[[1,2],[1],[2,3,4],[20,2]]
,您还需要将b
的内部列表转换为对象:然后您重新连接两个1维对象数组。