我试图追加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()
这是否有一种笨拙的方法?
答案 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强制进入(失去许多功能),或者,如果您真的需要目标,请使用类似于列表的数据结构来处理它。