2016-08-21 131 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