(短)整數需要兩個字節來存儲。你需要25,000個列表,每個列表有2000個整數;給出
25000*2000*2/1000000 = 100 MB
這工作得很好我的電腦(4GB RAM)上:
>>> import numpy as np
>>> x = np.zeros((25000,2000),dtype=int)
您能夠實例零上述矩陣?
你是否將文件讀入列表的Python列表中,然後將其轉換爲numpy數組?這是一個壞主意;它至少會使內存需求增加一倍。你的數據的文件格式是什麼?
對於稀疏矩陣scipy.sparse
提供了各種替代數據類型,這將會更加高效。
編輯:迴應OP的評論。
我有一些其他類的25000實例,每個實例的返回長度約2000。我希望把所有這些列表返回到np.array
列表。
那麼,你不知道要超過8GB!要解決這個問題,不要在內存中進行所有這些操作。將數據一次寫入磁盤,然後刪除實例並從numpy讀入文件。
首先做
with open(..., "wb") as f:
f = csv.writer(f)
for instance in instances:
f.writerow(instance.data)
這會寫所有的數據轉化成一個大十歲上下的CSV文件。然後,您可以使用np.loadtxt
:
numpy.loadtxt(open(..., "rb"), delimiter=",")
超過100 MB的方式:)我有8 GB的RAM。 – zebra 2012-03-18 16:23:23
對你的編輯,是的我能夠實例化 – zebra 2012-03-18 16:24:15
爲了你的下一個編輯,我有一些其他類的25000個實例,每個實例都返回一個長度約爲2000的列表。我想把所有這些列表返回到np.array – zebra 2012-03-18 16:26:55