4

我可以访问拥有 1000 多个文件的 The Human Connectome Project数据。.nii为了分析它们,我需要将它们加载为一个占用大量内存的 numpy 数组。例如,考虑以下代码:

import nibabel as nib
epi_image = nib.load('rfMRI_REST1_LR.nii')
epi_image.shape
out: (91, 109, 91, 1200)
epi_data = epi_image.get_data()

最后一行给出了一个 4d 张量,其中最后一个轴是时间。由于epi_data是 numpy 格式,我们可以通过将其转换为张量来使用它来训练神经网络,但为此我们需要加载总数据,5Gb这只是 1000 中的一个。但是,如果我能打破这 1200时间样本到 1200.nii我将能够加载感兴趣的样本。有没有办法.nii从原始文件中提取 1200。

4

1 回答 1

1

从原始文件中提取1200个.nii的方法是分别提取每一帧:

for idx in range(1200):
 epi_data = epi_image.get_data()[:,:,:,idx]
 nimg = nib.Nifti1Image(epi_data, affine=epi_image.affine, header=epi_image.header)
 nimg.to_filename("file%idx.nii"%+int(idx))
于 2020-02-29T22:04:27.090 回答