如何将小的二维数组添加到大的数组中?

9

我有一个较大的二维数组,想要加上一个较小的二维数组。

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中的值从 1,1 开始加到数组x中,这样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个回答

12

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

完美!非常感谢你。 - the dood

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

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

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

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

与@ArtemB建议的相同解决方案。感谢您的快速回复。 - the dood
4
谢谢指出可以使用标量。这对于大型操作可能会更快。 - ArtemB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接