2013-11-23 41 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