我通過numpy.loadtxt將一個csv文件加載到一個numpy數組中。我的數據有大約100萬條記錄和87列。雖然object.nbytes只有177159666個字節,但它實際上需要更多的理論,因爲我在使用scikit-learn培訓決策樹時遇到'MemoryError'。此外,在閱讀數據後,我係統中的可用內存減少了1.8個演出。我正在使用3個內存的linux機器上工作。那麼object.nbytes是否會返回一個numpy數組的實際內存使用情況?Numpy數組佔用太多內存
train = np.loadtxt('~/Py_train.csv', delimiter=',', skiprows=1, dtype='float16')
那麼,你有沒有問題? – Marcin 2012-08-02 15:01:17
這裏有一個相關的問題:http://stackoverflow.com/questions/11527964/convert-a-string-list-to-float32-efficiently。基本上,np.loadtxt佔用很多內存,因爲它首先將數據存儲在列表中,然後將這些數據轉換爲一個ndarray。 (至少將內存使用量增加3或4倍)。如果您知道大小,您可能需要考慮預先分配數組並自己解析它。另外,不要害怕查看np.loadtxt的源代碼。這是合理的理解。 – mgilson 2012-08-02 15:03:08
@Marcin,剛剛更新了我的問題。 – ibictts 2012-08-02 15:05:25