Поведение функции numpy rollaxis меня смущает. В документации говорится:
Переверните указанную ось назад, пока она не окажется в заданном положении.
И для параметра start
:
Ось катится, пока она не окажется перед этим положением.
Для меня это уже как-то непоследовательно.
Хорошо, прямой пример (из документации):
>>> a = np.ones((3,4,5,6))
>>> np.rollaxis(a, 1, 4).shape
(3, 5, 6, 4)
Ось с индексом 1 (4) откатывается назад, пока она не окажется перед индексом 4.
Теперь, когда индекс start
меньше, чем индекс axis
, мы имеем такое поведение:
>>> np.rollaxis(a, 3, 1).shape
(3, 6, 4, 5)
Вместо переноса оси с индексом 3 перед индексом 1 она заканчивается на 1.
Почему? Почему ось не всегда скатывается к указанному индексу start
?