par par - 3 months ago 15
Python Question

Return diagonal elements of scipy sparse matrix

Given a

scipy.sparse.csr.csr_matrix
, is there a quick way to return the elements on the diagonal?

The reason I would like to do this is to compute
inv(D) A
, where
D
is a diagonal matrix whose diagonal entries agree with
A
(
A
is my sparse matrix, guaranteed to have nonzeros on the diagonal).

Answer

Use csr_matrix.diagonal():

Returns the main diagonal of the matrix

Example:

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