matrix - 使用Python和NumPy的非常大的矩阵
NumPy是一个非常有用的库,从使用它我发现它能够轻松处理相当大(10000 x 10000)的矩阵,但开始与更大的任何东西挣扎(试图创建一个50000 x 50000的矩阵)失败)。 显然,这是因为大量的内存需求。
有没有办法在某种程度上在NumPy中创建巨大的矩阵(比如100万乘100万)(没有几TB的RAM)?
Peter asked 2019-04-25T02:41:47Z
11个解决方案
86 votes
PyTables和NumPy是要走的路。
PyTables将以HDF格式将数据存储在磁盘上,并具有可选的压缩功能。 我的数据集经常获得10倍压缩,这在处理数万或数亿行时非常方便。 它也很快; 我5岁的笔记本电脑可以在1,000,000行/秒的时间内处理类似SQL的GROUP BY聚合数据。 基于Python的解决方案也不错!
再次将数据作为NumPy重新访问进行访问非常简单:
data = table[row_from:row_to]
HDF库负责读取相关的数据块并转换为NumPy。
Stephen Simmons answered 2019-04-25T02:42:17Z
53 votes
scipy.sparse.csc_matrixs意在生活在记忆中。 如果你想使用大于RAM的矩阵,你必须解决这个问题。 您可以遵循至少两种方法:
尝试更有效的矩阵表示,利用矩阵具有的任何特殊结构。 例如,正如其他人已经指出的那样,稀疏矩阵(具有大量零的矩阵)存在有效的数据结构,如scipy.sparse.csc_matrix。<