2016-08-21 77 views
1

給定scipy.sparse.csr.csr_matrix,是否有快速的方法來返回對角線上的元素?返回scipy稀疏矩陣的對角線元素

我想這樣做的原因是爲了計算inv(D) A,其中D是對角矩陣,其對角線項同意AA是我的稀疏矩陣,保證有在對角線上非零)。

回答

2

使用csr_matrix.diagonal()

返回主對角線矩陣的

例子:

>>> import numpy as np 
>>> from scipy.sparse import csr_matrix 
>>> mymat = csr_matrix((4, 4), dtype=np.int8) 
>>> mymat.diagonal() 
array([0, 0, 0, 0], dtype=int8) 
+2

*嘆息*。當您在Google上完全失敗時:-)謝謝您的回答! +1(在10分鐘鎖定後將接受) – parsiad

+1

在你的例子中'mymat'是一個密集數組(即'toarray()':))。稀疏對角線與密集對角線不太一般。 – hpaulj

+0

@hpaulj感謝您的建議。我用沃倫的建議更新了這篇文章。希望你們倆現在都會喜歡我的回答! :)順便說一句,我受到裁判的推動,但你說的話是有道理的。 – gsamaras