Python 用于numpy的大型磁盘阵列

Python 用于numpy的大型磁盘阵列,python,arrays,numpy,sparse-matrix,Python,Arrays,Numpy,Sparse Matrix,我有一个稀疏数组,它似乎太大,无法在内存中有效地处理(2000x2500000,float)。我可以将它形成一个稀疏的lil_数组(scipy),但是如果我尝试输出一个列或行压缩的稀疏数组(a.tocsc(),a.tocsr()),我的机器内存不足(文本文件4.4G中的数据与pickeled lil数组12G中的数据之间也存在严重的不匹配-最好使用更接近原始数据大小的磁盘格式) 我将来可能会处理更大的阵列 问:处理大型磁盘阵列的最佳方法是什么,这样我就可以透明地使用常规numpy函数。例如,行和

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

我将来可能会处理更大的阵列

问:处理大型磁盘阵列的最佳方法是什么,这样我就可以透明地使用常规numpy函数。例如,行和列求和、向量积、最大值、最小值、切片等

pytables是未来的发展方向吗?是否有一个好的(快速的)sql numpy中间件层?numpy中内置了一个磁盘上的秘密阵列


过去使用(略小)我总是将长时间的计算结果缓存到磁盘上的数组。当数组最终小于4G左右时,这种方法就起作用了,但不再有效。

我经常使用它来处理数千GB的数值矩阵。我发现它们在我的目的下工作得非常好。显然,如果数据的大小超过RAM的大小,就必须小心关于要避免的访问模式。

这可能是可行的,但对于稀疏数组来说效率似乎很低。有稀疏版本吗?@AnthonyBak:据我所知不是。但是,一个2000x100000密集的
float32
数组的大小只有800MB(在磁盘和内存中)。是的,我原来的问题中有一个输入错误。它应该是2000x2500000。当您对数组进行pickle处理时,是否确保使用二进制协议?如果您使用的是默认文本协议,则这可能是导致文件大小过大的原因。