如何使用 numpy 将一个小矩阵添加到一个大矩阵中?

我试图弄清楚如何取一个小矩阵(B下面的矩阵)并将值添加到A某个索引处的更大的矩阵(下面的矩阵)中。对于这种情况, numpy 似乎是一个不错的选择,但我不知道该怎么做。


矩阵A:


[[0, 0, 0, 0, 0, 0]

 [0, 0, 0, 0, 0, 0]

 [0, 0, 0, 0, 0, 0]

 [0, 0, 0, 0, 0, 0]

 [0, 0, 0, 0, 0, 0]]

矩阵B:


[[2, 3, 4]

 [5, 6, 7]

 [8, 9, 3]]

想要的最终结果:


[[0, 0, 0, 0, 0, 0]

 [0, 0, 2, 3, 4, 0]

 [0, 0, 5, 6, 7, 0]

 [0, 0, 8, 9, 3, 0]

 [0, 0, 0, 0, 0, 0]]


弑天下
浏览 1493回答 2
2回答

一只甜甜圈

如果你想在左上角添加B到index in ,你可以使用 index 和 的属性来完成:AB(r, c)AshapeBA[r:r+B.shape[0], c:c+B.shape[1]] += B如果您只想设置元素(覆盖而不是添加),请替换+=为=. 在您的特定示例中:>>> A = np.zeros((5, 6), dtype=int)>>> B = np.r_[np.arange(2, 10), 3].reshape(3, 3)>>> r, c = 1, 2>>> A[r:r+B.shape[0], c:c+B.shape[1]] += B>>> Aarray([[0, 0, 0, 0, 0, 0],       [0, 0, 2, 3, 4, 0],       [0, 0, 5, 6, 7, 0],       [0, 0, 8, 9, 3, 0],       [0, 0, 0, 0, 0, 0]])索引操作产生一个视图成A,因为它是简单的索引,这意味着数据没有被复制,这使得操作相当有效的大型阵列。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python