Python 如何将较小的2D阵列添加到较大的阵列?

Python 如何将较小的2D阵列添加到较大的阵列?,python,arrays,numpy,slice,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]] 我想将

我有一个较大的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]]
这可以通过切片实现吗?有人能建议正确的slice语句格式来实现这一点吗

谢谢

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

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

将以更简单的方式实现相同的效果。

是的,您可以在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]]

完美的非常感谢。相同的解决方案是@ArtemB建议的。感谢您的快速回复。+1指出可以使用标量。对于大型操作,它可能会更快。
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]]