将 numpy 数组列表保存到磁盘上
Save list of numpy arrays onto disk
我有一个 42000
numpy 数组列表(每个数组是 240x240
),我想将其保存到文件中以供另一个 python 脚本。
我试过使用 pickle
和 numpy.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。
我有一个 42000
numpy 数组列表(每个数组是 240x240
),我想将其保存到文件中以供另一个 python 脚本。
我试过使用 pickle
和 numpy.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。