2011-03-22 22 views
3

我需要創建約200萬個向量w/1000個插槽(每個插槽只包含一個整數)。Python - 最好的數據結構令人難以置信的大矩陣

處理這些數據量的最佳數據結構是什麼?這可能是我高估了涉及的處理/內存量。

我需要迭代一組文件(總共大約34.5GB),並且每次在一條線上遇到200萬個項目中的一個(每個對應於一個向量)時更新向量。

我可以很容易地爲此編寫代碼,但我知道它不會達到處理數據量的最佳效果,這就是爲什麼我要問專家。 :)

最佳, 喬治娜

+0

它是否必須是Python?你可以在C中獲得更緊湊的佈局(或者如果你需要Python interop,則可以使用Cython)。相關的,NumPy可能是一個選項。 – delnan 2011-03-22 21:06:17

+1

這個數據結構將需要8GB的RAM。你有這麼多? – 2011-03-22 21:06:42

+0

您需要存儲什麼範圍的整數(最小和最大可能值)? – 2011-03-22 21:07:31

回答

5

你可能是內存綁定你的機器上。沒有清理正在運行的程序:

a = numpy.zeros((1000000,1000),dtype=int) 

不適合內存。但是一般情況下,如果你能解決這個問題,以至於你不需要一次在內存中存儲整個數組,或者你可以使用稀疏表示,那麼我將使用numpyscipy用於稀疏表示)。

此外,您可以考慮一下存儲hdf5數據與h5pypytablesnetcdf4netcdf4-python磁盤上,然後訪問您需要的部分。

+0

scipy具有稀疏矩陣的特定結構,請嘗試http://docs.scipy.org/doc/scipy/reference/sparse.html – renatopp 2011-03-22 21:26:37

1

使用稀疏矩陣假設大多數記錄是0

相關問題