numpy.rollaxis

numpy.rollaxis(a, axis, start=0)

Функция rollaxis() перемещает указанную ось, пока она не окажется в заданном положении.

Параметры:
a - массив Numpy
Массив ось которого должна быть перемещена.
axis - целое число
Определяет ось массива, которая должна быть перемещена назад.
start - целое число (необязательный)
Этот параметр определяет место остановки оси, т.е. ось перемещается назад, пока не окажется перед указанным значением. По умолчанию start = 0, что приводит к остановке перемещения.
Возвращает:
ndarray - массив NumPy
Массив, ось которого смещена в указанное место, при этом положение других осей относительно друг друга в нем не изменено.
Смотрите так же: moveaxis, swapaxes, transpose

Замечание

Данная функция поддерживается для обратной совместимости с более ранними версиями, поэтому предпочтительнее использовать функцию moveaxis, которая была введена в NumPy 1.11. С версии 1.10 всегда возвращается представление исходного массива, для более ранних версий представление возвращается только в том случае, если порядок осей изменяется, если нет (start = 0), то возвращается исходный массив.


Примеры

>>> import numpy as np
>>> 
>>> a = np.arange(24).reshape(2, 3, 4)
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> 
>>> a.shape
(2, 3, 4)
>>> 
>>> b = np.rollaxis(a, 2, 0)
>>> b
array([[[ 0,  4,  8],
        [12, 16, 20]],

       [[ 1,  5,  9],
        [13, 17, 21]],

       [[ 2,  6, 10],
        [14, 18, 22]],

       [[ 3,  7, 11],
        [15, 19, 23]]])
>>> 
>>> b.shape
(4, 2, 3)
>>> 
>>> # Более наглядные примеры
... a.shape
(2, 3, 4)
>>> 
>>> np.rollaxis(a, 2, 0).shape
(4, 2, 3)
>>> 
>>> np.rollaxis(a, 2, 1).shape
(2, 4, 3)
>>>
>>> np.rollaxis(a, 2, 2).shape    #  Не приведет к ошибке
(2, 3, 4)
>>> np.rollaxis(a, 2, 3).shape    #  Тоже не приведет к ошибке
(2, 3, 4)
>>> 
>>> np.rollaxis(a, 2, 5).shape    #  Приведет к ошибке
>>>
>>>
>>> a.shape
(2, 3, 4)
>>> 
>>> np.rollaxis(a, 0, 1).shape
(2, 3, 4)
>>> np.rollaxis(a, 0, 2).shape
(3, 2, 4)
>>> np.rollaxis(a, 0, 3).shape
(3, 4, 2)
>>> np.rollaxis(a, 0, -1).shape
(3, 2, 4)
>>> np.rollaxis(a, 0, -2).shape
(2, 3, 4)
>>> np.rollaxis(a, 0, -3).shape
(2, 3, 4)
>>> np.rollaxis(a, 0, -4).shape    #  Приведет к ошибке
>>>
>>> a.shape
(2, 3, 4)
>>> np.rollaxis(a, 0).shape
(2, 3, 4)
>>> np.rollaxis(a, 1).shape
(3, 2, 4)
>>> np.rollaxis(a, 2).shape
(4, 2, 3)