如何将小型2D阵列添加到更大的阵列?

时间:2013-11-23 00:39:27

标签: python arrays numpy slice

我有一个更大的2D数组,我想添加一个更小的2D数组。

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 个答案:

答案 0 :(得分:5)

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

将y就地添加到要修改的x切片中。请注意,numpy索引从0开始计数,而不是1.另外,请注意,对于y的特定选择,

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

将以更简单的方式达到同样的效果。

答案 1 :(得分:4)

是的,你可以在numpy数组上使用切片:

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