将小矩阵中的值分配到大矩阵中的指定位置

Assign values from small matrix to specified places in larger matrix

我想知道 Python 中是否存在类似的方法 (Mathematica): Mathematica

我在Python试过了,还是不行。我也尝试过 numpy.put() 或简单的 2 for 循环。这两种方法都可以正常工作,但我发现它们对于较大的矩阵(例如 3000×3000 个元素)非常耗时。

Python、

中描述的问题
import numpy as np

a = np.arange(0, 25, 1).reshape(5, 5)
b = np.arange(100, 500, 100).reshape(2, 2)
p = np.array([0, 3])

a[p][:, p] = b

输出不变的矩阵a:Python

也许您正在寻找这个:

a[p[...,None], p] = b

数组 a 在上面的赋值之后看起来像这样:

[[100   1   2 200   4]
 [  5   6   7   8   9]
 [ 10  11  12  13  14]
 [300  16  17 400  19]
 [ 20  21  22  23  24]]

Integer Array Indexing中所述,两个整数索引数组将一起广播并一起迭代,从而有效地索引位置 a[0,0]a[0,3]a[3,0] , 和 a[3,3]。然后,赋值语句将使用 RHS.

中的相应元素值在 a 的这些位置执行逐元素赋值