【问题标题】:How to effectively flip a multidimensional numpy array? [duplicate]如何有效地翻转多维 numpy 数组? [复制]
【发布时间】:2013-11-26 15:25:04
【问题描述】:

假设我有一个数组

>>> 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]

>>>> aflipped=flipud(a)

符号,因为我知道这非常快并且(重要的)内存使用率很低。我的代码最终已经交换了,for 循环根本不理想。

实际上这是一个 4D 数组,我只想翻转一个轴,但似乎我的选项仅限于前两个轴。有没有一种内存有效的方法来做到这一点?

【问题讨论】:

    标签: python numpy multidimensional-array


    【解决方案1】:

    类似这样的:

    >>> 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
    

    【讨论】:

      猜你喜欢
      • 2020-07-26
      • 2021-06-24
      • 1970-01-01
      • 2016-11-16
      • 2020-01-25
      • 2017-12-24
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多