用较小的数组替换较大的 numpy 数组中的值

use*_*827 2 python numpy

我有 2 个 numpy 数组:较大的数组是 10 x 10 numpy 数组,较小的数组是 2 x 2 数组。

我想在用户指定的位置用较小数组中的值替换较大数组中的值。例如,通过用 2 x 2 数组替换 4 个值来替换从其中心点开始的 10 x 10 数组的值。

现在,我通过使用嵌套的 for 循环来执行此操作,并找出较大数组中的哪些像素与较小数组中的像素重叠。有没有更pythonic的方法来做到这一点?

Aka*_*all 6

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)