最佳答案
我正在处理大型的3D 数组,我经常需要用不同的方法切片来进行各种数据分析。一个典型的“多维数据集”可以大约100GB (将来可能会变得更大)
Python 中大型数据集的典型推荐文件格式似乎是使用 HDF5(h5py 或 pytables)。我的问题是: 使用 HDF5来存储和分析这些多维数据集,而不是将它们存储在简单的平面二进制文件中,这样做是否有任何速度或内存使用方面的好处?HDF5是否更适合于表格数据,而不是像我现在使用的大型数组?我看到 HDF5可以提供很好的压缩,但我更感兴趣的是处理速度和处理内存溢出。
我经常只想分析多维数据集的一个大的子集。Pytables 和 h5py 的一个缺点似乎是,当我获取数组的一部分时,我总是得到一个数字数组,这耗尽了内存。但是,如果我切割一个平面二进制文件的数字内存映射,我可以得到一个视图,它将数据保存在磁盘上。因此,似乎我可以更容易地分析我的数据的特定部分,而不会超出我的内存。
我已经探索了 pytables 和 h5py,但到目前为止还没有看到它们对我的目的有什么好处。