Что делает numpy.rollaxis? - PullRequest
       3

Что делает numpy.rollaxis?

0 голосов
/ 25 сентября 2018
import numpy as np
a=np.arange(8)    
a=a.reshape(2,2,2)
print(a)  

Я понимаю, что ответ таков:

  [[[0 1]
      [2 3]]
     [[4 5]
      [6 7]]]

, но при печати (np.rollaxis (a, 2)) я не могу понять ответ:

 [[[0 2]
      [4 6]]
     [[1 3]
      [5 7]]]

и при печати (np.rollaxis (a, 2,1)) я тоже не могу понять ответ:

 [[[0 2]
      [1 3]]
     [[4 6]
      [5 7]]]

Как происходит этот роллаксис?

1 Ответ

0 голосов
/ 25 сентября 2018

Вы затрудняете себя, используя массив одинакового размера вдоль каждой оси, поэтому трудно увидеть преобразование, которое выполняет 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...