python - 我如何使用大的、内存消耗大的 numpy 数组?

标签 python numpy memory matplotlib

我有一个创建数组的程序:

List1 = zeros((x, y), dtype=complex_)

目前我正在使用 x = 500y = 1000000。 我将通过一些公式初始化列表的第一列。然后后续列将根据前面的列计算自己的值。 列表完全填满后,我将使用 imshow() 显示此多维数组。

列表中每个值(项)的大小为24 字节。 代码中的示例值为:4.63829355451e-32

当我使用 y = 10000000 运行代码时,它占用了过多的 RAM,系统停止运行。我该如何解决这个问题?有没有一种方法可以节省我的 RAM,同时仍然能够使用 imshow() 轻松处理列表?另外,imshow() 可以显示多大的列表?

最佳答案

没有办法解决这个问题(以任何一般方式)。

计算机 ( as commonly understood ) 的 RAM 数量有限,它们需要元素位于 RAM 中才能对其进行操作。

10000000x500complex128 数组大小需要大约 74GiB 来存储。 如果您希望使用普通计算机来执行此操作(而不是 supercomputer),则需要以某种方式减少正在处理的数据量

一种常见的技术是对数据进行分区并单独处理每个分区(可能在多台计算机上)。根据您要解决的问题,您可能会使用特殊的数据结构来减少表示数据所需的内存量 - 一个很好的例子是 sparse matrix .

需要这么多内存是非常不寻常的 - 在深入研究极其复杂的解决方法之前,请务必仔细考虑它是否确实需要

关于python - 我如何使用大的、内存消耗大的 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31569663/

相关文章:

python - networkx.draw() 的 pos 参数不起作用

python - matplotlib 在单个 pdf 页面中显示许多图像

python - 如何解决pip WeasyPrint安装后的Cairo和Pango版本问题?

python - 以相等的概率从 Pandas 组中随机选择——意想不到的行为

c++ - 如何确定缓冲区是否已释放

用位图控制数组

python - 在python中获取两个一维数组的乘积

python - 对具有屏蔽索引的 numpy 数组进行矢量化求和运算

c# - 序列化对于对象大小估计可靠吗?

python - 访问数组的多个元素