簡體   English   中英

為什么6GB的csv文件無法以numpy的形式整體讀取到內存(64GB)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM