[英]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為我們所做的事情的誤解
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.