Numpy无法在内存中存储大于1GB的矩阵

时间:2016-06-14 13:51:15

标签: python numpy matrix

我需要存储订单20000x20000的大矩阵。当我尝试初始化该命令的矩阵时,Python会引发内存错误。

Traceback (most recent call last):
    File "C:\Users\harwee\Desktop\Bubble\test_folder\test.py", line 3, in <module>
    a = numpy.ones((x,x),dtype=int)
  File "C:\Python27\lib\site-packages\numpy\core\numeric.py", line 183, in ones
    a = empty(shape, dtype, order)
MemoryError

我的总内存为8GB,当我登录Taskmanager时,显示内存使用量约为1GB。当内存可用时,为什么python会引发内存错误。我的是python 32bit版本

这是我正在使用的代码

import numpy
x= 16200
a = numpy.ones((x,x),dtype=int)

2 个答案:

答案 0 :(得分:2)

如果您使用的是32位Python,则无法分配超过2GB的内容,如果您在代码中执行其他操作,则可能超出此限制。另外,我认为numpy要求内存分配是连续的,这对于较大的块来说可能很难。

答案 1 :(得分:1)

这并不是Python强制执行的限制,而是32位处理之一。 32位地址系统中只有这么多空间。您可以通过迁移到64位Python安装来删除此限制。