Вы затрудняете себя, используя массив одинакового размера вдоль каждой оси, поэтому трудно увидеть преобразование, которое выполняет rollaxis
.Намного легче понять эту операцию для массива с различными размерами вдоль каждой оси.
Вот лучший пример:
a = np.arange(8).reshape(4,2,1)
rollaxis
принимает указанную вами осьи перемещает его в заданную позицию (значение по умолчанию 0):
>>> a.shape
(4, 2, 1)
>>> np.rollaxis(a, 1).shape # Rolls axis 1 to position 0
(2, 4, 1)
>>> np.rollaxis(a, 2).shape # Rolls axis 2 to position 0
(1, 4, 2)
Хотя эта функция все еще поддерживается, рекомендуется использовать numpy.moveaxis
, чтоведет себя аналогично, но не имеет аргумента по умолчанию для пункта назначения оси:
>>> np.moveaxis(a, 2).shape
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-87-77b5e96d3a20> in <module>()
----> 1 np.moveaxis(a, 2).shape
TypeError: moveaxis() missing 1 required positional argument: 'destination'
>>> np.moveaxis(a, 2, 0).shape
(1, 4, 2)