Ste*_*ons 89
PyTables和NumPy是要走的路.
PyTables将以HDF格式将数据存储在磁盘上,并具有可选的压缩功能.我的数据集经常获得10倍压缩,这在处理数万或数亿行时非常方便.它也很快; 我5岁的笔记本电脑可以在1,000,000行/秒的时间内处理类似SQL的GROUP BY聚合数据.基于Python的解决方案也不错!
再次将数据作为NumPy重新访问进行访问非常简单:
data = table[row_from:row_to]
HDF库负责读取相关的数据块并转换为NumPy.
Rob*_*let 55
numpy.arrays意在生活在记忆中.如果你想使用大于RAM的矩阵,你必须解决这个问题.您可以遵循至少两种方法:
scipy.sparse.csc_matrix.Dop*_*ift 30
您应该能够使用numpy.memmap对磁盘上的文件进行内存映射.使用较新的python和64位机器,您应该拥有必要的地址空间,而无需将所有内容加载到内存中.操作系统应该只处理将部分文件保留在内存中.
Sin*_*ion 11
Stefano Borini的帖子让我调查了这种事情到底有多远.
就是这个. 它似乎基本上做你想要的.HDF5将允许您存储非常大的数据集,然后以与NumPy相同的方式访问和使用它们.
确保您使用的是64位操作系统和64位版本的Python/NumPy.请注意,在32位体系结构上,您通常可以处理3GB内存(内存映射I/O等损失约1GB).
使用64位和大于可用RAM的数组,您可以使用虚拟内存,但如果必须交换,情况会变慢.此外,内存映射(请参阅numpy.memmap)是一种在磁盘上处理大型文件而无需将其加载到内存中的方法,但同样,您需要使用64位地址空间才能使用它.PyTables也将为您完成大部分工作.
| 归档时间: | 
 | 
| 查看次数: | 87752 次 | 
| 最近记录: |