2016-06-14 83 views
1

我需要存儲大型矩陣20000x20000。當我嘗試初始化該順序的矩陣時,Python會引發內存錯誤。Numpy無法在內存中存儲大於1GB的矩陣

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 

我的總RAM是8GB,當我檢查Taskmanager時,它顯示內存使用量大約爲1GB。爲什麼當內存可用時,python會引發內存錯誤。我的是蟒蛇32位版本

這裏是代碼我使用

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

嘗試使用Python 64位,我認爲你已經達到32 –

+0

的分配限制但是不應該是32位Python的2 GB? – Harwee

+0

是的,但如果你有其他東西正在進行它將超載,並且分配空間需要連續性,請檢查我的答案 –

回答

2

如果您正在使用32位Python中,你將不能超過2GB〜分配更多,如果你正在做您的代碼中的其他內容可能會超出此限制。此外,我認爲numpy要求內存分配是連續的,對於較大的塊可能很難。

1

這不是Python強制執行的限制,而是32位處理中的一個。在32位地址系統中只有很多空間。你可以通過移動到64位Python安裝來消除這個限制。