我需要存储订单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)
答案 0 :(得分:2)
如果您使用的是32位Python,则无法分配超过2GB的内容,如果您在代码中执行其他操作,则可能超出此限制。另外,我认为numpy要求内存分配是连续的,这对于较大的块来说可能很难。
答案 1 :(得分:1)
这并不是Python强制执行的限制,而是32位处理之一。 32位地址系统中只有这么多空间。您可以通过迁移到64位Python安装来删除此限制。