将numpy标注顺序从i,j,k更改为k,i,j
我需要帮助 我从nifti 3D图像创建了numpy阵列。 因为数据集维度顺序是以x,y,z(i,j,k)的形式提供的,所以我需要将其更改为z,x,y(k,i,j) Nifti图像尺寸顺序为512x512x508(i,j,k),在转换为numpy阵列后,我得到了错误的形状,因为它被视为(k,i,j) 所以我需要翻转尺寸以得到形状(512512),而不是(512508) 我尝试了各种版本的flip、fliplr、transponse,但我认为我没有取得任何进展 如何正确翻转此阵列将numpy标注顺序从i,j,k更改为k,i,j,numpy,numpy-ndarray,Numpy,Numpy Ndarray,我需要帮助 我从nifti 3D图像创建了numpy阵列。 因为数据集维度顺序是以x,y,z(i,j,k)的形式提供的,所以我需要将其更改为z,x,y(k,i,j) Nifti图像尺寸顺序为512x512x508(i,j,k),在转换为numpy阵列后,我得到了错误的形状,因为它被视为(k,i,j) 所以我需要翻转尺寸以得到形状(512512),而不是(512508) 我尝试了各种版本的flip、fliplr、transponse,但我认为我没有取得任何进展 如何正确翻转此阵列 a = np.l
a = np.load("/home/roman/train/processed_data/data_train.npy")
a[0].shape```
gives:
(512, 508)
numpy einsum是一个很好的工具。 正式文件:
在我看来,这是最清晰的书写和阅读方式。numpy.rollaxis可能?是的,我已经尝试过np.transpose,但现在我意识到我在代码中的错误位置进行了转换。。。我现在成功地做到了。谢谢大家。
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)