回答
分块数据集(H5D_CHUNKED)允许贮疏但根据您的数据,开销可能是重要的。
取一个典型的数组,并尝试稀疏和非稀疏,然后比较文件大小,然后你会看到它是否真的值得。
是的,[this](http://mail.hdfgroup.org/pipermail/hdf-forum_hdfgroup.org/2010-March/002704.html)后解释了如何做到这一点(或者怎么做_not_)谢谢 – andreabedini 2011-03-02 03:36:32
嗨,我真的不熟悉hdf5如何在内部工作,我如何将原始数据存储在hdf5文件中?这是否意味着我可以绕过表数据类型并写我自己的结构? – andreabedini 2011-03-02 03:41:09
一种解决方法是用compression
option创建数据集。例如,在Python中使用h5py:
import h5py
f = h5py.File('my.h5', 'w')
d = f.create_dataset('a', dtype='f', shape=(512, 512, 512), fillvalue=-999.,
compression='gzip', compression_opts=9)
d[3, 4, 5] = 6
f.close()
生成的文件是4.5 KB。没有压缩,这个相同的文件将是大约512 MB。这是一个99.999%的压缩,因为大部分数据是-999.
(或任何你想要的fillvalue
)。
等效可以通过设置H5::DSetCreatPropList::setDeflate至9,用example shown in h5group.cpp使用C++ HDF5 API来实现。
尽管分析确实是在python中完成的,但是hdf5文件是用C++生成的,因此h5py不是一个选项。是由hdf5原生支持的相同种类的压缩吗?我知道pytables和h5py支持额外的压缩协议。 – andreabedini 2014-09-28 06:19:58
@andreabedini我已经更新了答案,并链接到了一个C++示例,该示例使用相同的技术。我确信数据集必须被分块以启用压缩。 – 2014-09-28 20:58:06
从答案开始时的[HDF5链接](http://docs.h5py.org/en/latest/high/dataset.html#chunked-storage):“分块存储可以调整数据集的大小,并且因为数据存储在固定大小的块中,所以要使用压缩过滤器。“所以,是的,压缩需要分块。 – hBy2Py 2015-07-06 17:48:18
- 1. Python中是否支持稀疏矩阵?
- 2. R稀疏矩阵支持quantreg
- 3. Incanter是否支持稀疏矩阵?
- 4. 支持igraph中稀疏网络
- 5. Python多维稀疏阵列
- 6. 建设稀疏阵列
- 7. 稀疏阵列压缩
- 8. 执行稀疏阵列
- 9. 稀疏矩阵
- 10. 稀疏三元组稀疏矩阵matlab
- 11. scikit-learn中哪些估计量不支持稀疏矩阵?
- 12. 在HDF5中存储numpy稀疏矩阵(PyTables)
- 13. Numba中的稀疏矩阵
- 14. 支持稀疏矩阵和多标签输出的Logistic回归?
- 15. Java ArrayList是否支持稀疏标记?
- 16. 从稀疏矢量列表创建稀疏矩阵
- 17. 确定稀疏矩阵的稀疏性(Lil矩阵)
- 18. 以稀疏矩阵
- 19. 50Kx50K稀疏矩阵
- 20. Scipy:稀疏矩阵是否支持高级索引?
- 21. 稀疏矩阵和矩阵
- 22. 稀疏矩阵的列联表
- 23. 的Javascript通过稀疏阵列
- 24. 将列放入空的稀疏矩阵
- 25. 稀疏矩阵的乘积列元素
- 26. 稀疏矩阵的向量列表
- 27. 稀疏矩阵的划分
- 28. Oracle中的稀疏列
- 29. 稀疏与正常阵列Matlab
- 30. Scipy:稀疏矩阵条件去除列
[本答案] [1]提供了一个(仅限Python)解决方案。 [1]:http://stackoverflow.com/a/22589030/2858145 – 2014-03-23 13:55:32