6

我有一个稀疏数组,它似乎太大而无法在内存中有效处理(2000x2500000,float)。我可以将它形成一个稀疏的 lil_array (scipy) 但是如果我尝试输出一个列或行压缩的稀疏数组 (A.tocsc(), A.tocsr()) 我的机器内存不足(而且两者之间也存在严重的不匹配文本文件中的数据 4.4G 和腌制的 lil 数组 12G - 最好有一个更接近原始数据大小的磁盘格式)。

将来我可能会处理更大的数组。

问题:以透明方式使用常规 numpy 函数的方式处理大型磁盘阵列的最佳方法是什么。例如,沿行和列的总和、向量积、最大值、最小值、切片等?

pytables 是要走的路吗?是否有一个好的(快速)sql-numpy 中间件层?numpy 内置磁盘阵列的秘密?

在过去(略小)的数组中,我总是将长计算结果pickel缓存到磁盘。当阵列最终小于 4G 左右但不再成立时,此方法有效。

4

1 回答 1

2

我经常使用内存映射numpy数组来处理数 GB 的数值矩阵。我发现它们非常适合我的目的。显然,如果数据的大小超过了 RAM 的数量,则必须小心访问模式以避免颠簸

于 2012-04-25T16:08:49.960 回答