簡體   English   中英

Scipy 大稀疏數組維度 MemoryError

[英]Scipy large sparse array dimensions MemoryError

我正在使用 scipy.sparse 處理相對較大的高維稀疏scipy.sparse 實際數據和行/列索引不存在存儲問題。

問題是我最終得到了類似的東西

sp.csr_matrix(([1], ([0], [0])), shape=(int(1e14), 1)).shape

這使

MemoryError: Unable to allocate 728. TiB for an array with shape (100000000000001,) and data type int64

因為它看起來像scipy試圖分配行/列掩碼(或什么?)

有沒有好的解決方法? 使用coo_matrix會修復它嗎?

更新

事實證明我只是個白痴,應該更加注意我使用的是 CSC 矩陣還是 CSR 矩陣。

CSC 將壓縮行。 CSR 將壓縮列。 對於像這樣存儲的數據(我確信這是一種利用稀疏性的糟糕格式),CSC 會更好地工作。

無論如何,這兩個都可以正常工作

wat = sp.csc_matrix(([1], ([0], [0])), shape=(int(1e14), 1))
wat2 = sp.csr_matrix(([1], ([0], [0])), shape=(1, int(1e14)))

這只是對CSC和CSR為我們所做的事情的誤解

如果您使用的是 32 位版本的 python,請升級到 64 位(如果您有 64 位硬件和操作系統)。 此外,這是 memory 錯誤,您的系統可用 memory 不足以處理大量分配(100000000000001,)

您的系統有多少可用 RAM。 如果您可以添加更多關於您的系統的描述,例如操作系統、RAM 等,將會很有幫助。

請參閱以下相關鏈接的鏈接,以某種方式(不完全)相同的問題鏈接 1 鏈接 2

暫無
暫無

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

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