簡體   English   中英

Python:lil_matrix vs csr_matrix在極大的稀疏矩陣中

[英]Python: lil_matrix vs csr_matrix in extremely large sparse matrices

我想逐步建立一個非常大的稀疏矩陣。 問題是lil_matrix占用了大量RAM,效率低下。 例如,如果我想創建一個2000萬x 2000萬lil_matrix ,它將完全lil_matrix我的RAM。 另一方面, csr_matrix幾乎不占用空間。 但是,據稱csr_matrix對修改效率低下。 有沒有其他方法可以獲得lil_matrix的好處而不占用RAM中的這么多空間? 另外,為什么它首先占用了這么多空間,因為它應該是一個稀疏矩陣?

注意:真正的問題實際上並不是創建這么大的矩陣,而是創建以下list

list = [sp.lil_matrix((150,150)) for i in range(1000)]

這也炸毀了我的RAM。

我並沒有聲稱有一個完整的答案,但如果你看一下矩陣內部結構,我就會陷入困境。

In [12]: s = sparse.csr_matrix((5,5))

In [13]: s.__dict__
Out[13]: 
{'_shape': (5, 5),
 'data': array([], dtype=float64),
 'format': 'csr',
 'indices': array([], dtype=int32),
 'indptr': array([0, 0, 0, 0, 0, 0], dtype=int32),
 'maxprint': 50}

In [14]: s.indptr.nbytes
Out[14]: 24

In [15]: l = sparse.lil_matrix((5,5))

In [16]: l.__dict__
Out[16]: 
{'_shape': (5, 5),
 'data': array([[], [], [], [], []], dtype=object),
 'dtype': dtype('float64'),
 'format': 'lil',
 'maxprint': 50,
 'rows': array([[], [], [], [], []], dtype=object)}

In [17]: l.data.nbytes
Out[17]: 40

In [18]: l.rows.nbytes
Out[18]: 40

暫無
暫無

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

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