使用 numpy 复制和反转数组部分时遇到问题

Trouble copying and reversing parts of array with numpy

我正在尝试复制输入二维数组的一部分 "img" 并镜像该部分并将其复制到二维数组中 "out"

下面的代码可以满足我的需要

a = numpy.zeros(shape=(pad, pad))
a[:,:]=img[0:pad,0:pad]
out[0:pad,0:pad]=a[::-1,::-1]

但简单地执行以下操作并不会

out[0:pad,0:pad]=img[0:pad:-1,0:pad:-1]

而 returnsValueError: could not broadcast input array from shape (0,0) into shape (2,2) 代替 pad=2,我不确定为什么。

img[0:pad:-1,0:pad:-1] 

应该是

img[pad-1::-1, pad-1::-1]

因为您希望索引从 pad-1 开始并下降到 0。请参阅此处了解 the complete rules governing NumPy basic slicing

例如,

import numpy as np

img = np.arange(24).reshape(6,4)
# array([[ 0,  1,  2,  3],
#        [ 4,  5,  6,  7],
#        [ 8,  9, 10, 11],
#        [12, 13, 14, 15],
#        [16, 17, 18, 19],
#        [20, 21, 22, 23]])

pad = 2
out = img[pad-1::-1, pad-1::-1]

print(out)

产量

[[5 4]
 [1 0]]