我想在Python中进行分层键值存储,这基本上可以归结为将字典存储到文件中。我指的是任何类型的字典结构,可能包含其他字典、numpy 数组、可序列化的 Python 对象等等。不仅如此,我希望它能够存储经过空间优化的 numpy 数组,并在 Python 2 和 3 之间运行良好。
以下是我所知道的方法。我的问题是这个列表中缺少什么,是否有替代方案可以避免我所有的交易破坏者?
- 蟒蛇的
pickle
模块(破坏性因素:使 numpy 数组的大小膨胀很多)
- Numpy's
save
/savez
/load
(破坏因素:Python 2/3 格式不兼容)
-
PyTables 替代 numpy.savez https://github.com/PyTables/PyTables/issues/185(破坏交易:仅处理 numpy 数组)
- 手动使用 PyTables(破坏交易:我希望用它来不断更改研究代码,因此能够通过调用单个函数将字典转储到文件中非常方便)
PyTables 的替代品numpy.savez
很有希望,因为我喜欢使用 hdf5 的想法,它可以非常有效地压缩 numpy 数组,这是一个很大的优点。然而,它不采用任何类型的字典结构。
最近,我一直在做的是使用类似于 PyTables 替代品的东西,但增强它以能够存储任何类型的条目。这实际上工作得很好,但我发现自己将原始数据类型存储在 length-1 CArray 中,这有点尴尬(并且与实际 length-1 数组不明确),即使我设置chunksize
为 1,这样就不会占用太多空间。
那里已经有类似的东西了吗?
Thanks!
两年前提出这个问题后,我开始编写自己的基于 HDF5 的 pickle/ 替代品np.save
。从那时起,它已经成熟为一个稳定的包,所以我想我最终会回答并接受我自己的问题,因为它的设计正是我正在寻找的:
- https://github.com/uchicago-cs/deepdish https://github.com/uchicago-cs/deepdish
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)