"Преобразование" Numpy Arrray: Move Dimension - PullRequest
0 голосов
/ 17 сентября 2018

Я создаю массив a:

import numpy as np
a = np.zeros((3, 10, 10), np.uint8)
a[1,5,5] = 255

с красной точкой в ​​центре, где RGB является первым измерением. Затем я строю это с помощью matplotlib:

import matplotlib.pyplot as plt
plt.imshow(a)

Но, конечно, это не сработает, потому что imshow ожидает массив с измерениями (10, 10, 3), и я передаю ему массив с измерениями (3, 10, 10). Как я могу «перевернуть» массив так, чтобы RGB было третьим измерением, а не первым?

1 Ответ

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

Что вам нужно, это swapaxes.

import numpy as np
a = np.zeros((3, 10, 10), np.uint8)

print(a.shape) #(3,10,10)

print(np.swapaxes(a,0,2).shape) #(10,10,3)

См. документация .


np.swapaxes(a,0,2) равно np.transpose(a, (2,1,0)).

Существует еще одна опция, которая np.transpose(a, (1,2 0)).

Как всегда, транспонированная матрица может иметь две версии, которые дают похожий результат, но с различной трехмерной симметрией вращения.

Это зависит отесли зеркальная матрица влияет на ваш результат, вам следует тщательно проверить, имеет ли это значение.

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