python - numpy 的磁盘阵列很大

标签 python arrays numpy sparse-matrix

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

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

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

pytables 是正确的选择吗?有好的(快速的)sql-numpy 中间件层吗? numpy 内置磁盘阵列的 secret ?

在过去使用(稍微小一些的)数组时,我总是将长计算结果缓存到磁盘。这在阵列最终小于 4G 左右但不再成立时有效。

最佳答案

我经常使用memory-mapped numpy arrays处理数 GB 的数字矩阵。我发现它们非常适合我的目的。显然,如果数据的大小超过 RAM 的数量,则必须注意访问模式以避免 thrashing。 .

关于python - numpy 的磁盘阵列很大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10319448/

相关文章:

python - 用鼠标悬停在上面时,智能感知 vscode 不显示参数或文档

python - 获取连接到端口/dev/ttyACM0的设备名称

python - np.outer 如何帮助创建过滤器内核?

python - 将 `int *` 转换为 Cythonized 函数中的 Python 或 Numpy 对象

java - 数组搜索代码

python - 无法理解 numpy.random.RandomState() 的输出

python - `UnicodeDecodeError: ' utf-8 ' codec can' t 解码位置 1 中的字节 0x8b : invalid start byte`

python - 将变量与数字相乘时遇到问题

arrays - 在 Go 中使用 slice 进行子集检查

c - 发送字符串数组 MPI C