想要在numpy中添加2个2d数组

时间:2014-06-26 13:09:08

标签: python numpy

我试图追加2个2d numpy数组

a = np.array([[1],
       [2],
       [3],
       [4]])

b = np.array([[ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

目标是

c = ([[1],
       [2],
       [3],
       [4],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

尝试np.concatenate((a,b),axis=0)np.concatenate((a,b),axis=1) 得到

ValueError: all the input array dimensions except for the concatenation axis must match exactly

np.append(a,b)

但似乎没有任何效果。如果我转换为列表,它会给我我想要的结果,但似乎效率低下

c = a.tolist() + b.tolist()

这是否有一种笨拙的方法?

2 个答案:

答案 0 :(得分:3)

如错误所示,尺寸必须匹配。

因此,您可以调整a的大小,使其与b的维度匹配,然后连接(空单元格用零填充)。

a.resize(3,4)
a = a.transpose()
np.concatenate((a,b))

array([[ 1,  0,  0],
       [ 2,  0,  0],
       [ 3,  0,  0],
       [ 4,  0,  0],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

答案 1 :(得分:0)

简短回答 - 不。 Numpy数组需要是矩形的&#39 ;;类似于线性代数中的矩阵。您可以按照建议here强制进入(失去许多功能),或者,如果您真的需要目标,请使用类似于列表的数据结构来处理它。