问题:我有一个大的3D图像集合,我想存储到一个文件中。我应该如何有效地做到这一点?
背景:数据集约有1000个3D MRI图像,大小为256×256×156。为了避免频繁打开和关闭文件,我尝试将所有文件存储到一个大列表中并导出它。你知道吗
到目前为止,我试着把每一个核磁共振图像作为3D numpy数组读取,并将其添加到一个列表中。当我试图用numpy.保存,它消耗了我所有的内存并以“内存错误”退出。
以下是我尝试的代码:
import numpy as np
import nibabel as nib
import os
file_list = os.listdir('path/to/files')
for file in file_list:
mri = nib.load(os.path.join('path/to/files',file))
mri_array = np.array(mri.dataobj)
data.append(mri_array)
np.save('imported.npy',data)
预期结果:
有没有更好的方法来存储这样的数据集而不消耗太多内存?你知道吗
使用HDF5文件格式或Numpy的
memmap
是两个选项,如果您想将所有数据塞入一个文件中,我将首先使用这两个选项。这些选项不会将所有数据加载到内存中。你知道吗Python有h5py包来处理HDF5文件。这些有很多特性,我通常倾向于这个选项。它看起来像这样:
memmap
使用二进制文件,所以功能并不丰富。这看起来像:相关问题 更多 >
编程相关推荐