numpy反向多维数组

o8x7eapl  于 9个月前  发布在  其他
关注(0)|答案(3)|浏览(91)

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


非常感谢您!

kqlmhetl

kqlmhetl1#

怎么样:

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]


虽然我不太喜欢后者,因为前两个维度是隐含的,更难看到正在发生的事情。

czq61nw1

czq61nw12#

对于每一个内部数组,你可以使用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函数的输入数组必须至少是二维的。
此外,如果你想在向上/向下方向翻转数组,你也可以使用flipud

hpcdzsge

hpcdzsge3#

您可以使用numpy.flip()轻松完成此操作:

import numpy as np
a = 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]]])
print(np.flip(a, axis=2))

字符串
该公式给出:

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


由于额外的方括号,输入数组是三维的。因此,沿沿着axis=2翻转意味着翻转第三轴(因为计数从0开始)。
请注意,这将返回一个视图,而不是一个副本(参见docs)。

相关问题