有很多选择。我将只讨论HDF5,因为我有使用这种格式的经验。
优点 :便携式(可以在Python之外读取),本机压缩,内存不足功能,元数据支持。
缺点 :依赖于单个低级C API,可能会将数据损坏为单个文件,删除数据不会自动减小大小。
以我的经验,为了提高性能和可移植性,请 避免使用
pyTables/
HDFStore存储数字数据。您可以改用提供的直观界面
h5py。
存储数组
import h5py, numpy as nparr = np.random.randint(0, 10, (1000, 1000))f = h5py.File('file.h5', 'w', libver='latest') # use 'latest' for performancedset = f.create_dataset('array', shape=(1000, 1000), data=arr, chunks=(100, 100), compression='gzip', compression_opts=9)
压缩和分块
有许多压缩选择,例如
blosc,
lzf分别是压缩和解压缩性能的好选择。注意
gzip是本机的;HDF5安装默认不会附带其他压缩过滤器。
分块是另一种选择,当与您从内存中读取数据的方式保持一致时,可以显着提高性能。
添加一些属性
dset.attrs['Description'] = 'Some text snippet'dset.attrs['RowIndexArray'] = np.arange(1000)
储存字典
for k, v in d.items(): f.create_dataset('dictgroup/'+str(k), data=v)
内存不足访问
dictionary = f['dictgroup']res = dictionary['my_key']
没有什么替代品可以阅读
h5py
文档,该文档暴露了大多数C
API,但是从上面的内容应该可以看出,它具有很大的灵活性。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)