![](/img/trans.png)
[英]Why RAM memory (16GB) is crashed while loading 6GB dictionary file into memory
[英]Why 6GB csv file is not possible to read whole to memory (64GB) in numpy
我有sze為6.8GB的csv文件,盡管我有64GB的RAM,但我無法將其讀入numpy數組的內存中
CSV文件有1000萬行,每行有131條記錄(int和float的混合)
我試圖讀取它以浮動numpy數組
import numpy as np
data = np.genfromtxt('./data.csv', delimiter=';')
由於內存而失敗。
當我只讀一行並得到大小時
data = np.genfromtxt('./data.csv', delimiter=';', max_rows=1)
data.nbytes
我得到1048個字節所以,我希望10.000.000 * 1048 = 10,48 GB應該可以毫無問題地存儲在內存中。 為什么不起作用?
最后,我試圖通過定義類型來優化內存中的數組
data = np.genfromtxt('./data.csv', delimiter=';', max_rows=1,
dtype="i1,i1,f4,f4,....,i2,f4,f4,f4")
data.nbytes
所以我得到每行只有464B,所以這將是只有4.56 GB,但它仍然無法加載到內存中。
你有什么主意嗎? 我需要在Keras中使用此數組。 謝謝
genfromtext
是常規的python代碼,僅在最后一步將數據轉換為numpy數組。 在這最后一步,在RAM需要持有一個巨大的蟒蛇清單,以及所產生的numpy的陣列,都在同一時間。 也許您可以嘗試使用numpy.fromfile
或Pandas csv閱讀器。 由於您知道每列的數據類型和行數,因此您還可以自己預先分配一個numpy數組,並使用簡單的for循環將其填充。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.