将 numpy 数组列表保存到磁盘上

Save list of numpy arrays onto disk

我有一个 42000 numpy 数组列表(每个数组是 240x240),我想将其保存到文件中以供另一个 python 脚本。

我试过使用 picklenumpy.savez_compressed 并且 运行 进入内存错误(我有 16gb DDR3)。我读到通常用于深度学习的 hdf5 无法保存列表,所以我有点卡住了。

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

编辑:我之前使用 np.save 将这些数据保存到磁盘上的一个 numpy 数组中,它大约有 2.3GB,但我的电脑不能总是处理它所以如果我尝试处理它有时会崩溃.我阅读列表可能更好,所以我转而使用 numpy 数组列表

假设我们有一个包含 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。