Перестановка осей в NumPy
Задать новый порядок осей трёхмерного массива позволяет
функция transpose.
Она принимает
кортеж номеров осей: на каждой
позиции указывается, какая ось
исходного массива займёт это место
в результате. Длины осей переставляются
вместе с ними, поэтому форма меняется
предсказуемо.
Создадим трёхмерный блок формы
(2, 3, 4) и переставим оси
в порядке (2, 0, 1). Выведем
форму до преобразования и после:
import numpy as np
block = np.arange(24).reshape(2, 3, 4)
print(block.shape) # выведет (2, 3, 4)
ordered = np.transpose(block, (2, 0, 1))
print(ordered.shape) # выведет (4, 2, 3)
Первая ось результата взята из бывшей
третьей, поэтому её длина стала
4. Остальные длины следуют
за своими осями. Другой кортеж
даёт другую форму при том же числе
элементов:
import numpy as np
cube = np.zeros((3, 2, 2))
print(cube.shape) # выведет (3, 2, 2)
ordered = np.transpose(cube, (1, 0, 2))
print(ordered.shape) # выведет (2, 3, 2)
Создайте массив формы (2, 2, 3)
из последовательных целых, начиная
с 0. Задайте порядок осей
(2, 0, 1) и выведите форму
исходного массива и форму результата.
Создайте массив единиц формы
(4, 1, 3). Переставьте оси
в порядке (0, 2, 1) и выведите
обе формы.