NumPy是一个非常有用的库,通过使用它,我发现它能够轻松处理非常大的矩阵(10000 x 10000),但是开始处理任何更大的矩阵(尝试创建50000 x 50000的矩阵)失败)。显然,这是因为需要大量内存。
是否有一种方法可以以某种方式(没有几个terrabytes的RAM)在NumPy中本地创建大型矩阵(比如说一百万乘一百万)?
PyTables和NumPy是必经之路。
PyTables将以HDF格式(可选压缩)将数据存储在磁盘上。我的数据集经常得到10倍压缩,这在处理数千万或几亿行时非常方便。它也非常快。我5岁的笔记本电脑可以像SQL一样执行GROUP BY聚合,处理数据的速度为1,000,000行/秒。对于基于Python的解决方案来说还不错!
再次作为NumPy重新数组访问数据非常简单:
data = table[row_from:row_to]
HDF库负责读取相关的数据块并将其转换为NumPy。