我一直试图在IPython中初始化一个numpy整数数组,即1000 x 1000 x 120,每次我得到一个MemoryError
。我不知道为什么会出现这种情况,因为它确实不是那么大的数组。
我的代码很简单:
bigLattice = np.zeros((numsimulations,end2+1,t+1))
让我知道是否有我可以解决的问题,以便numpy可以访问更多内存。
答案 0 :(得分:3)
浮点数的默认类型是float64,因此矩阵的大小为915Mb
In [1]: a = np.zeros((1000,1000,120))
In [2]: %whos
Variable Type Data/Info
-------------------------------
a ndarray 1000x1000x120: 120000000 elems, type `float64`, 960000000 bytes (915 Mb)
Here's a link您可以在其中找到有关可用dtypes
及其限制的详细信息。
如果您只需要存储一个字节的整数值,那么您可以使用int8
值进行实例化:
np.zeros((1000,1000,120),dtype=np.int8)
将大小减小到114Mb:
%whos
Variable Type Data/Info
-------------------------------
a ndarray 1000x1000x120: 120000000 elems, type `int8`, 120000000 bytes (114 Mb