Многократный многомерный массив
Что является самым простым способом в 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]]])
Большое спасибо!
Ответы
Ответ 1
Как насчет:
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]
хотя мне нравится, что позже меньше, поскольку первые два измерения являются неявными, и более сложно понять, что происходит.
Ответ 2
Для каждого внутреннего массива вы можете использовать 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