我有一个创建数组的程序:
List1 = zeros((x, y), dtype=complex_)
目前我正在使用x = 500
和y = 1000000
。
我将通过一些公式初始化列表的第一列。然后,后续列将根据前一列计算自己的值。
列表完全填满后,我将使用imshow()
显示此多维数组。
列表中每个值(项)的大小为24
个字节。
代码中的示例值为:4.63829355451e-32
当我使用y = 10000000
运行代码时,它会占用太多RAM并且系统会停止运行。我该如何解决这个问题?有没有办法保存我的RAM,同时仍然能够轻松地使用imshow()
处理列表?另外,列表可以imshow()
显示多大?
答案 0 :(得分:4)
没有办法解决这个问题(以任何一般方式)。
计算机(as commonly understood)具有有限的RAM,并且它们需要元素在RAM中才能对它们进行操作。
complex128
数组大小10000000x500
需要大约74GiB才能存储。 如果您希望使用常规计算机(<{3}}),则需要以某种方式减少正在处理的数据量。
一种常见的技术是对数据进行分区并单独处理每个分区(可能在多台计算机上)。根据您尝试解决的问题,可能会使用特殊的数据结构来减少表示数据所需的内存量 - 一个很好的例子是supercomputer。
需要这么多内存是非常不寻常的 - 在进入非常复杂的解决方法之前,请务必仔细考虑是否实际需要。