2016-01-13 42 views
1

我有2個numpy數組:較大的一個是10 x 10 numpy數組,較小的數組是2 x 2數組。用較小的數組替換較大的numpy數組中的值

我想在較大的數組中使用用戶指定的位置替換較小數組中的值。例如。用2 x 2數組替換4個值,從中心點開始替換10 x 10數組的值。

現在,我正在通過使用嵌套for循環,並確定較大的數組中的哪些像素與較小的數組重疊。有沒有更pythonic的方式來做到這一點?

回答

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