Python 如何有效翻转多维numpy数组?

Python 如何有效翻转多维numpy数组?,python,numpy,multidimensional-array,Python,Numpy,Multidimensional Array,假设我有一个数组 >>> a [[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [[10, 11, 12], [13, 14, 15], [16, 17, 18]]] 我想绕一个轴翻转,以 >>> aflipped [[[2, 1, 0], [5, 4, 3], [8, 7, 6]], [[12, 11, 10], [15, 14, 13], [18, 17, 16]]] 我想用某种方式来做这件事 >>> a

假设我有一个数组

>>> a  
[[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [[10, 11, 12], [13, 14, 15], [16, 17, 18]]]
我想绕一个轴翻转,以

>>> aflipped  
[[[2, 1, 0], [5, 4, 3], [8, 7, 6]], [[12, 11, 10], [15, 14, 13], [18, 17, 16]]]
我想用某种方式来做这件事

>>> aflipped=a[::-1][::1][::1]

表示法,因为我知道这是非常快速和(重要的)内存使用率低。我的代码已经交换了,for循环根本就不理想

实际上,这是一个4D阵列,我只想翻转一个轴,但我的选择似乎仅限于前两个轴。有没有节省内存的方法可以做到这一点?

类似这样的方法:

>>> a = np.array([[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [[10, 11, 12], [13, 14, 15], [16, 17, 18]]])
>>> a[:,:,::-1]      #or a[..., ::-1]
array([[[ 2,  1,  0],
        [ 5,  4,  3],
        [ 8,  7,  6]],

       [[12, 11, 10],
        [15, 14, 13],
        [18, 17, 16]]])
时间比较:

>>> %timeit a[:,:,::-1]
1000000 loops, best of 3: 1.53 µs per loop
>>> %timeit a[..., ::-1]
1000000 loops, best of 3: 1.06 µs per loop
>>> %timeit a[:,:,::-1]
1000000 loops, best of 3: 1.53 µs per loop
>>> %timeit a[..., ::-1]
1000000 loops, best of 3: 1.06 µs per loop