Meg*_*arg 1 python arrays numpy
我想反转二维数组,但在使用[::-1][::-1]和[::-1, ::-1]索引时得到两个不同的结果。下面是一个示例。我不太明白它是如何不同地解释的。
values = [
[5, 6, 5, 5, 8, 9, 9],
[9, 5, 1, 4, 5, 9, 7],
[3, 9, 6, 2, 1, 2, 3],
[1, 7, 6, 7, 1, 7, 5],
[2, 1, 3, 8, 7, 8, 8],
[2, 9, 3, 6, 4, 6, 4]
]
x = np.array(values)
reverse_2d_1 = x[::-1][::-1]
reverse_2d_2 = x[::-1, ::-1]
Run Code Online (Sandbox Code Playgroud)
[[5 6 5 5 8 9 9]
[9 5 1 4 5 9 7]
[3 9 6 2 1 2 3]
[1 7 6 7 1 7 5]
[2 1 3 8 7 8 8]
[2 9 3 6 4 6 4]]
Run Code Online (Sandbox Code Playgroud)
[[4 6 4 6 3 9 2]
[8 8 7 8 3 1 2]
[5 7 1 7 6 7 1]
[3 2 1 2 6 9 3]
[7 9 5 4 1 5 9]
[9 9 8 5 5 6 5]]
Run Code Online (Sandbox Code Playgroud)
小智 5
在第一个示例中,两个切片是单独解析的,因为每个切片都是一个单独的操作。因此,第一个[::-1]将垂直翻转数组,然后第二个[::-1]将再次垂直翻转数组,使其保持开始状态。
在第二个示例中,切片一起解析,每个切片在相应的轴上操作。所以第一个::-1将垂直翻转,第二个::-1将水平翻转。
如果你觉得比较容易理解,也可以调用np.flip(x, (0, 1))沿着给定的轴翻转。