反转3D矩阵中嵌套数组的顺序

问题描述 投票:1回答:1

我有一个3D矩阵,或更确切地说,是一个2D矩阵的数组,我想颠倒最深数据集的顺序。

所以说我有:

array([[[ 1      ,  2      ,  3      , ...,
          7      ,  8      ,  9      ],
        ...,
        [ 10      ,  11      ,  12      , ...,
          16      ,  17      ,  18      ]],

       [[ 19      ,  20      ,  21      , ...,
          25      ,  26      ,  27      ],
        ...,
        [ 28      ,  29      ,  30      , ...,
          34      ,  35      ,  36      ]]])

我希望成为

array([[[ 9      ,  8      ,  7      , ...,
          3      ,  2      ,  1      ],
        ...,
        [ 18      ,  17      ,  16      , ...,
          12      ,  11      ,  10      ]],

       [[ 27      ,  26      ,  25      , ...,
          21      ,  20      ,  19      ],
        ...,
        [ 36      ,  35      ,  34      , ...,
          30      ,  29      ,  28      ]]])

我目前正在通过使用以下方法实现此结果:

reordered_list = []
for i in range(ts):
    inner_list = []
    for j in range(M_y):
        inner_list.append(original_array[i][j][::-1])
    reordered_list.append(inner_list)

reordered_array = np.array(reordered_list)

但想知道是否有更有效的途径。

提前感谢。

python arrays multidimensional-array reverse
1个回答
1
投票

您可以使用:

a = np.array([[[ 1      ,  2      ,  3,   
                  7      ,  8      ,  9      ],

                [ 10      ,  11      ,  12      , 
                  16      ,  17      ,  18      ]],

               [[ 19      ,  20      ,  21      ,
                  25      ,  26      ,  27      ],

                [ 28      ,  29      ,  30      , 
                  34      ,  35      ,  36      ]]])
a[:,:,::-1]

输出:

array([[[ 9,  8,  7,  3,  2,  1],
    [18, 17, 16, 12, 11, 10]],

   [[27, 26, 25, 21, 20, 19],
    [36, 35, 34, 30, 29, 28]]]) 

0
投票

您可以将numpy.flip()与相关的轴一起使用(此处为2)

    y = np.flip(x, axis=2)
© www.soinside.com 2019 - 2024. All rights reserved.