我有一个创建数组的程序:
List1 = zeros((x, y), dtype=complex_)
目前我正在使用 x = 500
和 y = 1000000
。
我将通过一些公式初始化列表的第一列。然后后续列将根据前面的列计算自己的值。
列表完全填满后,我将使用 imshow()
显示此多维数组。
列表中每个值(项)的大小为24
字节。
代码中的示例值为:4.63829355451e-32
当我使用 y = 10000000
运行代码时,它占用了过多的 RAM,系统停止运行。我该如何解决这个问题?有没有一种方法可以节省我的 RAM,同时仍然能够使用 imshow()
轻松处理列表?另外,imshow()
可以显示多大的列表?
最佳答案
没有办法解决这个问题(以任何一般方式)。
计算机 ( as commonly understood ) 的 RAM 数量有限,它们需要元素位于 RAM 中才能对其进行操作。
10000000x500
的 complex128
数组大小需要大约 74GiB 来存储。 如果您希望使用普通计算机来执行此操作(而不是 supercomputer),则需要以某种方式减少正在处理的数据量。
一种常见的技术是对数据进行分区并单独处理每个分区(可能在多台计算机上)。根据您要解决的问题,您可能会使用特殊的数据结构来减少表示数据所需的内存量 - 一个很好的例子是 sparse matrix .
需要这么多内存是非常不寻常的 - 在深入研究极其复杂的解决方法之前,请务必仔细考虑它是否确实需要。
关于python - 我如何使用大的、内存消耗大的 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31569663/