使用 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]]
我正在尝试复制输入二维数组的一部分 "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]]