[SciPy-Dev] Function to check if sparse matrix is symmetric

Nils Wagner nils106 at googlemail.com
Fri Oct 10 06:49:51 EDT 2014


IMHO "is_Hermitian" is more general.

Nils


On Fri, Oct 10, 2014 at 12:00 PM, Saullo Castro <saullogiovani at gmail.com>
wrote:

> I developed a function (shown below) to check if a sparse matrix is
> symmetric and would like to know if the community is interested to include
> in scipy.sparse.
>
> Regards,
> Saullo
>
> def is_symmetric(m):
>     """Check if a sparse matrix is symmetric
>
>     Parameters
>     ----------
>     m : array or sparse matrix
>         A square matrix.
>
>     Returns
>     -------
>     check : bool
>         The check result.
>
>     """
>     if m.shape[0] != m.shape[1]:
>         raise ValueError('m must be a square matrix')
>
>     if not isinstance(m, coo_matrix):
>         m = coo_matrix(m)
>
>     r, c, v = m.row, m.col, m.data
>     tril_no_diag = r > c
>     triu_no_diag = c > r
>
>     if triu_no_diag.sum() != tril_no_diag.sum():
>         return False
>
>     rl = r[tril_no_diag]
>     cl = c[tril_no_diag]
>     vl = v[tril_no_diag]
>     ru = r[triu_no_diag]
>     cu = c[triu_no_diag]
>     vu = v[triu_no_diag]
>
>     sortl = np.lexsort((cl, rl))
>     sortu = np.lexsort((ru, cu))
>     vl = vl[sortl]
>     vu = vu[sortu]
>
>     check = np.allclose(vl, vu)
>
>     return check
>
>
> _______________________________________________
> SciPy-Dev mailing list
> SciPy-Dev at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scipy-dev/attachments/20141010/34aab777/attachment.html>


More information about the SciPy-Dev mailing list