【问题标题】:How can I add small 2D array to larger array?如何将小的二维数组添加到更大的数组中?
【发布时间】:2013-12-08 01:15:12
【问题描述】:

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

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

切片可以实现吗?有人可以建议切片语句的正确格式来实现这一点吗?

谢谢

【问题讨论】:

    标签: python arrays numpy slice


    【解决方案1】:

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

    【讨论】:

    • 完美!非常感谢。
    【解决方案2】:
    x[1:3, 1:3] += y
    

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

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

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

    【讨论】:

    • @ArtemB 建议的相同解决方案。感谢您的快速回复。
    • +1 表示可以使用标量。对于大型操作,它可能会更快。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    相关资源
    最近更新 更多