我有 2 个 numpy 数组:较大的数组是 10 x 10 numpy 数组,较小的数组是 2 x 2 数组。
我想在用户指定的位置用较小数组中的值替换较大数组中的值。例如,通过用 2 x 2 数组替换 4 个值来替换从其中心点开始的 10 x 10 数组的值。
现在,我通过使用嵌套的 for 循环来执行此操作,并找出较大数组中的哪些像素与较小数组中的像素重叠。有没有更pythonic的方法来做到这一点?
In [1]: import numpy as np
In [2]: a = np.zeros(100).reshape(10,10)
In [3]: b = np.ones(4).reshape(2,2)
In [4]: a[4:6, 4:6] = b
In [5]: a
Out[5]:
array([[ 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.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 1., 1., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 1., 1., 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., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
Run Code Online (Sandbox Code Playgroud)