Изменение порядкового номера измерения с i, j, k на k, i, j - PullRequest
0 голосов
/ 06 ноября 2019

мне нужна помощь!

Я создал массив из nifti трехмерного изображения. Поскольку порядок размерности набора данных представлен как x, y, z (i, j, k), мне нужно изменить его на z, x, y (k, i, j).

Порядок размеров изображения Nifti составляет 512x512x508 (i, j, k), и после преобразования в массив numpy я получаю неправильную форму, поскольку он выглядит как (k, i, j)

Мне нужно перевернуть размерный порядок, чтобы получить форму (512,512), а не (512,508).

Я пробовал разные версии flip, fliplr, transponse, но я не думаю, что что-то получаю ...

Как правильно перевернуть этот массив?

a = np.load("/home/roman/train/processed_data/data_train.npy")
a[0].shape```
gives: 
(512, 508)

1 Ответ

0 голосов
/ 06 ноября 2019

numpy einsum - хороший инструмент для использования. Официальный документ: https://docs.scipy.org/doc/numpy/reference/generated/numpy.einsum.html

nifti = np.random.randint(0,5,size=(508,512,513)) 
# set the last dim to 513 just to make stuff more clear
nifti.shape
# (508, 512, 513)

nifti_reshape = np.einsum('kij->ijk',nifti)
nifti_reshape.shape
(512, 513, 508)

На мой взгляд, это самый понятный способ писать и читать.

...