根据你的描述,你的案子看起来像:In [344]: a=[np.arange(5),np.arange(5)]
In [345]: b=[np.arange(5),np.arange(3)]
In [346]: a
Out[346]: [array([0, 1, 2, 3, 4]), array([0, 1, 2, 3, 4])]
In [347]: b
Out[347]: [array([0, 1, 2, 3, 4]), array([0, 1, 2])]
In [348]: np.concatenate((a,a))
Out[348]:
array([[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]])
In [349]: np.concatenate((a,a),axis=1)
Out[349]:
array([[0, 1, 2, 3, 4, 0, 1, 2, 3, 4],
[0, 1, 2, 3, 4, 0, 1, 2, 3, 4]])
但是如果我使用(a,b),它会抱怨维度不相等。在
当输入本身是数组时,concatenate的行为更加清晰。这里是数组的列表。在
将np.array应用于a生成一个2行数组。np.concatenate((a,))也做同样的事情。在
^{pr2}$
但是在b上尝试该操作会产生一个object数组,因为这两个元素的大小不相等。这基本上只是array包装中的一个列表。在In [353]: np.array(b)
Out[353]: array([array([0, 1, 2, 3, 4]), array([0, 1, 2])], dtype=object)
将a和{}连接在一起意味着什么?首先弄清楚您希望b的数组版本是什么样子。在In [361]: np.concatenate(b)
Out[361]: array([0, 1, 2, 3, 4, 0, 1, 2])
使用np.pad确保b的所有元素足够长的示例:In [370]: b1=[np.pad(i,(0,5-i.shape[0]),mode='constant') for i in b]
In [371]: b1
Out[371]: [array([0, 1, 2, 3, 4]), array([0, 1, 2, 0, 0])]
In [372]: np.array(b1)
Out[372]:
array([[0, 1, 2, 3, 4],
[0, 1, 2, 0, 0]])
In [373]: np.concatenate((a,b1))
Out[373]:
array([[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 0, 0]])