如何在重叠区域内将小数组分配给大数组?

问题描述 投票:0回答:1

我想在一个8x8的二维数组里放一个8x7的小数组。

这是我的工作内容。

--> Array called 'a' with shape 8x7

a = [[ 16.,  11.,  10.,  16.,  24.,  40.,  51.],
     [ 12.,  12.,  14.,  19.,  26.,  58.,  60.],
     [ 14.,  13.,  16.,  24.,  40.,  57.,  69.],
     [ 14.,  17.,  22.,  29.,  51.,  87.,  80.],
     [ 18.,  22.,  37.,  56.,  68., 109., 103.],
     [ 24.,  35.,  55.,  64.,  81., 104., 113.],
     [ 49.,  64.,  78.,  87., 103., 121., 120.],
     [ 72.,  92.,  95.,  98., 112., 100., 103.]]


--> Array called 'b' with shape 8x8

b = [[0., 0., 0., 0., 0., 0., 0., 0.],
     [0., 0., 0., 0., 0., 0., 0., 0.],
     [0., 0., 0., 0., 0., 0., 0., 0.],
     [0., 0., 0., 0., 0., 0., 0., 0.],
     [0., 0., 0., 0., 0., 0., 0., 0.],
     [0., 0., 0., 0., 0., 0., 0., 0.],
     [0., 0., 0., 0., 0., 0., 0., 0.],
     [0., 0., 0., 0., 0., 0., 0., 0.]]

基本上,我想要的是:

--> Array called 'c' with shape 8x8

c = [[ 16.,  11.,  10.,  16.,  24.,  40.,  51., 0],
     [ 12.,  12.,  14.,  19.,  26.,  58.,  60., 0],
     [ 14.,  13.,  16.,  24.,  40.,  57.,  69., 0],
     [ 14.,  17.,  22.,  29.,  51.,  87.,  80., 0],
     [ 18.,  22.,  37.,  56.,  68., 109., 103., 0],
     [ 24.,  35.,  55.,  64.,  81., 104., 113., 0],
     [ 49.,  64.,  78.,  87., 103., 121., 120., 0],
     [ 72.,  92.,  95.,  98., 112., 100., 103., 0]]

有没有一种简单的方法可以做到这一点,最好不用循环,比如 "for","while","map "或者列表理解?

先谢谢你

python arrays numpy indexing numpy-ndarray
1个回答
2
投票

你可以直接将其分片赋值给 b 的尺寸 a:

x, y = a.shape
b[:x, :y] = a

print(b)
array([[ 16.,  11.,  10.,  16.,  24.,  40.,  51.,   0.],
       [ 12.,  12.,  14.,  19.,  26.,  58.,  60.,   0.],
       [ 14.,  13.,  16.,  24.,  40.,  57.,  69.,   0.],
       [ 14.,  17.,  22.,  29.,  51.,  87.,  80.,   0.],
       [ 18.,  22.,  37.,  56.,  68., 109., 103.,   0.],
       [ 24.,  35.,  55.,  64.,  81., 104., 113.,   0.],
       [ 49.,  64.,  78.,  87., 103., 121., 120.,   0.],
       [ 72.,  92.,  95.,  98., 112., 100., 103.,   0.]])
© www.soinside.com 2019 - 2024. All rights reserved.