我需要帮助!
我从nifti 3D图像创建了numpy数组。 由于数据集的维度顺序为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)
答案 0 :(得分:0)
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)
我认为这是最清晰的读写方式。