我有一个42000
numpy 数组的列表(每个数组都是240x240
),我希望将其保存到文件中以便在另一个python脚本中使用。
我尝试过使用pickle
和numpy.savez_compressed
并遇到内存错误(我有16GB DDR3)。我读到hdf5
常用于深度学习的东西无法保存列表,所以我有点卡住了。
有谁知道如何保存我的数据?
编辑:我之前使用np.save
将这些数据保存到磁盘上的numpy数组中,它大约为2.3GB,但我的计算机无法始终处理它,所以如果我试图处理它有时会崩溃。我阅读列表可能会更好,所以我已经开始使用numpy数组列表
答案 0 :(得分:1)
假设我们有一个numpy
数组列表A
,并希望将这些数组按顺序保存到HDF5文件中。
我们可以使用h5py
库创建数据集,每个数据集对应A
中的数组。
import h5py, numpy as np
A = [arr1, arr2, arr3] # each arrX is a numpy array
with h5py.File('file.h5', 'w', libver='latest') as f: # use 'latest' for performance
for idx, arr in enumerate(A):
dset = f.create_dataset(str(idx), shape=(240, 240), data=arr, chunks=(240, 240)
compression='gzip', compression_opts=9)
出于兼容性原因,我在这里使用gzip
压缩,因为它随每个HDF5安装一起提供。您可能还想考虑blosc
& lzf
个过滤器。我还设置chunks
等于shape
,假设您打算读取整个数组而不是部分数组。
h5py documentation是提高您对HDF5格式理解的绝佳资源,因为h5py
API紧跟C API。