«перестановка» в matlab в python

19

Я переводил программу из Matlab в Python.

В коде Matlab используется метод перестановки:

B = PERMUTE(A,ORDER) rearranges the dimensions of A so that they
%   are in the order specified by the vector ORDER.  The array produced
%   has the same values as A but the order of the subscripts needed to 
%   access any particular element are rearranged as specified by ORDER.
%   For an N-D array A, numel(ORDER)>=ndims(A). All the elements of 
%   ORDER must be unique.

Есть ли эквивалентный метод в Python/NumPy?

  • 0
    numpy.rollaxis близко ...
  • 2
    @Maurits Это случайная перестановка. Поскольку в описании функции "permute" в matlab нет ничего случайного, я предполагаю, что это не случайно ...
Показать ещё 1 комментарий
Теги:

1 ответ

23
Лучший ответ

Это выполняется в transpose в numpy.ndarray. По умолчанию поведение отменяет порядок, но вы можете предоставить список своего собственного заказа.

  • 0
    Но что, если у меня есть массив размера [4, 6], и я хочу сделать это [1, 4, 6]. В MATLAB это будет mX = permute(mA, [3, 1, 2]); , Однако transpose в Python не удастся (поскольку форма массива не имеет третьего измерения). Есть ли решение для этого (у меня нет Numpty с rollaxes , так что думайте Numpy 0.9.xxxx)
  • 0
    Если вы хотите добавить ось, я бы использовал что-то вроде A = A[np.newaxis, ...] или A = A[:, np.newaxis, :] зависимости от того, где вы хотите новую ось. Вы можете переместить оси после этого, если это необходимо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню