2015-09-25 54 views
0

我想創建一個特定維數的numpy數組,但是我得到一個內存錯誤。在(相對)小矩陣上獲取numpy內存錯誤

no_of_frames = 1404 
no_of_cells = 136192 
original_vals = np.zeros((no_of_frames, no_of_cells), dtype=np.float32) 

我得到的錯誤是:

difference_array = np.zeros((no_of_frames, no_of_cells), dtype=np.float32) 
    MemoryError 

根據我的計算1404 X 136192 * 4〜729 MB。這似乎很合理。我正在運行此代碼的機器具有8 GB的RAM。那麼,爲什麼我會得到這個錯誤?

我將不勝感激任何幫助。謝謝!

回答

1

如果您是在32位蟒蛇的工作,你被限制在32位地址空間(〜2GB)

,如果您有其他的東西去上它,你也許在另外numpy的超過此限制

需要連續的內存空間來創建它的列表...這意味着它必須找到一個不間斷的768MB RAM(這是一種很難)

+0

謝謝我想我將不得不轉向64位Python。 – user3057470

1

我只是想你我4GB的機器上了,沒有問題的代碼:

Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit  (Intel)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> no_of_frames = 1404 
>>> no_of_cells = 136192 
>>> import numpy as np 
>>> original_vals = np.zeros((no_of_frames, no_of_cells), dtype=np.float32) 
>>> original_vals+=1 
>>> 

我再進行計算(original_vals + = 1),歷時約10秒,但也是成功的。所以我不知道這是否是一個python問題。你在使用win32,win64,linux或其他系統嗎?

+0

我正在使用64位Windows系統,但是我的錯誤是我使用了32位內存,位Python。 – user3057470