为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

弑天下 2021-08-05 18:25:47
我试图弄清楚如何取一个小矩阵(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]]
查看完整描述

2 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

如果你想在左上角添加B到index in ,你可以使用 index 和 的属性来完成:AB(r, c)AshapeB


A[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

>>> A

array([[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,因为它是简单的索引,这意味着数据没有被复制,这使得操作相当有效的大型阵列。


查看完整回答
反对 回复 2021-08-05
  • 2 回答
  • 0 关注
  • 1479 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信