numpy反向多维数组

时间:2011-09-14 12:17:30

标签: python multidimensional-array numpy

numpy中最简单的方法是反转数组的最内部值,如下所示:

array([[[1, 1, 1, 2],
    [2, 2, 2, 3],
    [3, 3, 3, 4]],

   [[1, 1, 1, 2],
    [2, 2, 2, 3],
    [3, 3, 3, 4]]])

以便我得到以下结果:

array([[[2, 1, 1, 1],
    [3, 2, 2, 2],
    [4, 3, 3, 3]],

   [[2, 1, 1, 1],
    [3, 2, 2, 2],
    [4, 3, 3, 3]]])

非常感谢!

2 个答案:

答案 0 :(得分:33)

怎么样:

import numpy as np
a = np.array([[[10, 1, 1, 2],
               [2, 2, 2, 3],
               [3, 3, 3, 4]],
              [[1, 1, 1, 2],
               [2, 2, 2, 3],
               [3, 3, 3, 4]]])

,最后一个维度的反面是:

b = a[:,:,::-1]

b = a[...,::-1]

虽然我喜欢后者较少,因为前两个维度是隐含的,并且更难以看到发生了什么。

答案 1 :(得分:1)

对于每个内部数组,您可以使用fliplr。 它会向左/右方向翻转每行中的条目。列保留,但显示的顺序与以前不同。

样本用法:

import numpy as np
initial_array = np.array([[[1, 1, 1, 2],
                          [2, 2, 2, 3],
                          [3, 3, 3, 4]],
                         [[1, 1, 1, 2],
                          [2, 2, 2, 3],
                          [3, 3, 3, 4]]])
index=0
initial_shape = initial_array.shape
reversed=np.empty(shape=initial_shape)
for inner_array in initial_array:
    reversed[index] = np.fliplr(inner_array)
    index += 1

打印反转

输出:

array([[[2, 1, 1, 1],
        [3, 2, 2, 2],
        [4, 3, 3, 3]],
       [[2, 1, 1, 1],
        [3, 2, 2, 2],
        [4, 3, 3, 3]]])

确保fliplr函数的输入数组必须至少为2-D。

此外,如果你想在上/下方向翻转阵列。您也可以使用flipud