快速获取NumPy数组反转的步进方式

3

我有一个应用程序,需要根据某些步长沿着NumPy数组的一个轴反转元素。例如,让我们考虑以下数组

In [1]: import numpy as np

In [2]: a = np.array([[1,2],[3,4],[5,6],[7,8]])

In [3]: a
Out[3]: 
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

我希望以步长2沿着第一轴(axis=0)翻转此数组。换句话说,我想快速获得以下数组:

Out[4]: 
array([[3, 4],
       [1, 2],
       [7, 8],
       [5, 6]])

有没有内置的NumPy例程可以快速完成这个操作?

“...沿着一个轴翻转元素...根据某些步幅。”这个问题有多普遍?你只对翻转第一个轴上的一对感兴趣吗? - Warren Weckesser
实际上,它比我在描述中所暗示的要更加通用。在大多数情况下,我只需要能够沿着n维数组的第一个轴进行反转,但步幅是任意的(在这种情况下,我将其简化为仅为2)。 - wbinventor
1个回答

4

将数组重塑为3D数组;翻转一个维度;返回2D:

In [51]: a = np.array([[1,2],[3,4],[5,6],[7,8]])
In [52]: a
Out[52]: 
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])
In [53]: a.reshape(2,2,2)
Out[53]: 
array([[[1, 2],
        [3, 4]],

       [[5, 6],
        [7, 8]]])
In [54]: a.reshape(2,2,2)[:,::-1,:]
Out[54]: 
array([[[3, 4],
        [1, 2]],

       [[7, 8],
        [5, 6]]])
In [55]: a.reshape(2,2,2)[:,::-1,:].reshape(4,2)
Out[55]: 
array([[3, 4],
       [1, 2],
       [7, 8],
       [5, 6]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接