2013-11-23 69 views
3

我有一個更大的二維數組,我想添加一個更小的二維數組。如何將小二維數組添加到較大的數組中?

from numpy import * 
x = range(25) 
x = reshape(x,(5,5)) 
print x 
[[ 0 1 2 3 4] 
[ 5 6 7 8 9] 
[10 11 12 13 14] 
[15 16 17 18 19] 
[20 21 22 23 24]] 
y = [66,66,66,66] 
y = reshape(y,(2,2)) 
print y 
[[66 66] 
[66 66]] 

我想從陣列y添加值x開始1,1使x看起來是這樣的:

[[ 0 1 2 3 4] 
[ 5 72 73 8 9] 
[10 77 78 13 14] 
[15 16 17 18 19] 
[20 21 22 23 24]] 

這可能與切片?有人可以建議切片聲明的正確格式來實現嗎?

感謝

回答

2

是的,你可以在numpy的陣列使用切片:由@ArtemB建議

In [20]: x[1:3,1:3] += y 

In [21]: print x 
[[ 0 1 2 3 4] 
[ 5 72 73 8 9] 
[10 77 78 13 14] 
[15 16 17 18 19] 
[20 21 22 23 24]] 
+0

完美!非常感謝。 –

4
x[1:3, 1:3] += y 

加上y就地到的X你要修改的片段。需要注意的是numpy的索引數從0,而不是1。此外,注意,對於Y的這個特殊選擇,

x[1:3, 1:3] += 66 

將實現以簡單的方式相同的效果。

+0

相同的解決方案秒。感謝您的快速回復。 –

+3

+1表示可以使用標量。對於大型運營來說,這可能會更快。 – ArtemB