我有2个numpy数组:较大的数组是10 x 10 numpy数组,较小的数组是2 x 2数组。
我想将较大数组中的值替换为较小数组中的值,位于用户指定的位置。例如。通过用2 x 2数组替换4个值,替换从中心点开始的10 x 10数组的值。
现在,我通过使用嵌套的for循环来做这个,并确定较大数组中的哪些像素与较小数组中的像素重叠。有更多的pythonic方法吗?
答案 0 :(得分:4)
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.]])