Эффективно преобразовать / переупорядочить массив numpy с (a, b, c) на (a, c, b) - PullRequest
0 голосов
/ 18 июня 2020

У меня есть несколько Numpy 3D массивов формы (a, b, c). Значения a, b и c неизвестны. Однако я хочу эффективно преобразовать каждый из массивов в (a, c, b).

Вот что я делаю:

for array in list_of_arrays:
    a, b, c = array.shape
    array = array.reshape(a, c, b)

Есть ли более эффективный способ сделать это, возможно, в одной строке кода? Могу ли я использовать метод индексации -1 для изменения формы / переупорядочения массивов?

Спасибо.

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Может быть np.transpose? Все размеры меняются местами в указанном порядке.

x = np.random.randint(0, 256, (100, 80, 3))

np.transpose(x, (1, 0, 2))
(80, 100, 3)
1 голос
/ 18 июня 2020
import numpy as np

# Example array with shape (2, 4, 6)    
array = np.arange(48).reshape((2, 4, 6))

# Swap axis in the 1st and 2nd dimension and print out its shape     
np.swapaxis(array, 1, 2).shape

Вывод:

(2, 6, 4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...