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

时间:2016-01-13 23:08:31

标签: python numpy

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

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

现在,我通过使用嵌套的for循环来做这个,并确定较大数组中的哪些像素与较小数组中的像素重叠。有更多的pythonic方法吗?

1 个答案:

答案 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.]])