обратный многомерный массив - PullRequest
19 голосов
/ 14 сентября 2011

Какой самый простой способ в 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 ]

33 голосов
/ 14 сентября 2011

Как насчет:

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 голос
/ 24 августа 2015

Для каждого внутреннего массива вы можете использовать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...