簡體   English   中英

創建非常大的動態數組

[英]Create dynamic array with very large size

我創建如下數組(行= 2649429,col = 17770,數組的大小為47,080,353,330〜470億)

double* a= new double [row*col];

錯誤如下

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

火車數據約為3GB。

請告訴我如何處理數組? 解決方案。 謝謝。

假設這是根據數組大小對https://www.kaggle.com/jieyima/netflix-recommendation-collaborative-filtering進行過濾的。

您需要使用某種稀疏數組。 例如,列表向量,您可以在其中列出每位客戶看過的電影。

那,或者您分批訓練,一次讀取一小部分數據。

如您所建議的,一個平面數組將大部分填充為0。這太低效了。 只有平均每個客戶看了一半的電影,這才有意義。

無論如何,使用double是一個非常糟糕的主意。 從1到5的評分適合一個字符或更少,可節省大量數據。

最后,請注意:

客戶ID的范圍為1到2649429,帶空格。 有480189個用戶。

您仍應使用稀疏結構。 但是,即使平放,也應該只有 480189行,而不是2649429行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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