将一维数组连接到一个 3D 数组

我有一个三维阵列A,具有形状(5774,15,100)和另一个1 d阵列B具有形状(5774,)。我想添加这些以获得另一个C具有 shape 的矩阵(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)


慕仙森
浏览 147回答 1
1回答

千万里不及你

您需要使用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.shapeOut: (5774, 15, 101)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python