【问题标题】:Adding values from small matrix to a specific place in larger matrix using numpy使用 numpy 将小矩阵中的值添加到大矩阵中的特定位置
【发布时间】:2025-12-23 22:55:15
【问题描述】:

我对 numpy 中的矩阵有疑问,我对使用它很陌生。为了简化我的问题:假设我有一个由零组成的“大”4x4 矩阵 A 和一个由一个组成的较小的 2x2 矩阵 B。我想将B 添加到A 中的特定索引。我想得到 row[1], col [1] 上的那些;行[1] 列[3]; A 中的 row[3] col[1] 和 row[3] col[3]。我有一个索引为 arr = [1,3] 的数组。如何将此矩阵 B 添加到给定数组 arr 的矩阵 A 中?

A = [[0,0,0,0], 
     [0,0,0,0], 
     [0,0,0,0], 
     [0,0,0,0]]

B = [[1,1], 
     [1,1]]

arr = [1,3]

Desired result: A = 
[[0,0,0,0],
 [0,1,0,1],
 [0,0,0,0],
 [0,1,0,1]]

感谢任何提示!

【问题讨论】:

    标签: python numpy matrix


    【解决方案1】:

    假设arr 既是行索引又是列索引,您需要在包含第 1 行和第 3 行以及第 1 和第 3 列的子矩阵上提取视图。这是最简单的方法,使用 numpy advanced indexing

    A = np.zeros((4, 4))
    B = np.ones((2, 2))
    arr = np.array([1, 3])
    
    A[arr[:, None], ar] += B
    

    arr[:, None] 只是arr.reshape(-1, 1) 的快捷方式。这意味着索引明确引用行。

    【讨论】:

    • 完美,谢谢!我发现的另一种方法是也使用 numpy.ix_ 命令