将numpy数组列表保存到磁盘

时间:2018-05-16 15:08:43

标签: python list numpy hdf5 h5py

我有一个42000 numpy 数组的列表(每个数组都是240x240),我希望将其保存到文件中以便在另一个python脚本中使用。

我尝试过使用picklenumpy.savez_compressed并遇到内存错误(我有16GB DDR3)。我读到hdf5常用于深度学习的东西无法保存列表,所以我有点卡住了。

有谁知道如何保存我的数据?

编辑:我之前使用np.save将这些数据保存到磁盘上的numpy数组中,它大约为2.3GB,但我的计算机无法始终处理它,所以如果我试图处理它有时会崩溃。我阅读列表可能会更好,所以我已经开始使用numpy数组列表

1 个答案:

答案 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。