我有一个形状为A
的三维数组(5774,15,100)
和另一个形状为B
的一维数组(5774,)
。我想添加这些元素以获得另一个形状为C
的矩阵(5774,15,101)
。
我使用hstack
作为
C = hstack((A ,np.array(B)[:,None]))
我得到以下错误,任何建议。
ValueError: could not broadcast input array from shape (5774,15,100) into shape (5774)
答案 0 :(得分:3)
您需要使用np.concatenate
(与各种np.*stack
方法不同,它可以对不同形状的数组进行分类)。然后,您需要使用np.broadcast_to
将(5774,)
形状的数组转换为(5774, 15, 1)
(因为concatenate
仍需要所有数组具有相同的维数)。>
C = np.concatenate((A,
np.broadcast_to(np.array(B)[:, None, None], A.shape[:-1] + (1,))),
axis = -1)
检查:
A = np.random.rand(5774, 15, 100)
B = np.random.rand(5774)
C = np.concatenate((A,
np.broadcast_to(np.array(B)[:, None, None], A.shape[:-1] + (1,))),
axis = -1)
C.shape
Out: (5774, 15, 101)