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

标签 python list numpy hdf5 h5py

我有一个 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 安装一起提供。您可能还希望考虑 blosclzf 过滤器。我还将 chunks 设置为等于 shape,假设您打算读取整个数组而不是部分数组。

h5py documentation是提高您对 HDF5 格式理解的绝佳资源,因为 h5py API 紧跟 C API。

关于python - 将 numpy 数组列表保存到磁盘上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50374409/

相关文章:

python - 无法导入 Keras 库

python - 尝试替换 pandas 数据框中的停用词,发生 sre_constants.error

Java:从数组列表中获取字符串

python - 为什么 numpy 在数字化示例中比 matlab 慢得多?

Python,为什么 i=+1 不会导致无限循环?

python - 更改 PySide.QtGui.QTabWidget UI 时可见额外窗口

python - 根据条件从字典列表中生成唯一的字典对

python - 在 Python 3 中比较 DNA 序列

python - 子类化 numpy.ndarray - 为什么 __array_finalize__ 在这里没有被调用两次?

python - 在列表中查找数字递增(具有不同增量)的组