我正在开展一个项目,我必须存储大约1700万个128
维整数数组,例如[1, 2, 1, 0, ..., 2, 6, 4]
,我试图找出什么是' s最好的方法。
完美的解决方案是能够快速存储和检索数组,因为我需要访问所有这些数据才能进行计算。有了这么多的数据,我显然无法将它们全部存储在内存中以便进行计算,因此访问批量的数组应该尽可能快。
我在Python工作。
你推荐什么?使用DB
(SQL
vs NOSQL
?),将其存储在文本文件中,使用python' Pickle?
答案 0 :(得分:1)
考虑到数据集的大小(34 GB,假设16位整数),将数据集存储为带有PyTables的HDF5可能是最佳选择。
PyTables专门开发用于有效处理无法在内存中同时加载的极大数据集。另外,请查看可以提高I / O效率并节省一些磁盘空间的compression options。
答案 1 :(得分:0)
如果你的整数是8位,那么numpy数组似乎没那么大。在我的计算机上创建a=numpy.ones((17e6,128),uint8)
不到一秒钟。但是ones((17e6,128),uint16)
很难,ones((17e6,128),uint64)
崩溃了。