【问题标题】:How to get sparse graph Laplacian matrix in python?如何在python中获得稀疏图拉普拉斯矩阵?
【发布时间】:2017-11-24 18:07:37
【问题描述】:

我有一个 csr_matrix 格式的稀疏矩阵 AA 是无向图的加权邻接矩阵,因此是对称且非负的。我想计算它的图 Lapalican。

我以前用过 MATLAB,代码很简单:

L = diag(sum(A,2)) - A   % or L=diag(sum(A))-A because A is symmetric

但是我们如何在 Python 中做到这一点?我是 Python 中稀疏矩阵的新手。我只能想出一个相当丑陋的解决方案:

import numpy as np
import scipy.sparse as sps
L = sps.diags(np.reshape(np.array(A.sum(axis=1)), A.shape[0])) - A

有人知道更优雅的解决方案吗?

【问题讨论】:

    标签: python matlab graph sparse-matrix


    【解决方案1】:

    这就是networkX library 对稀疏矩阵 A 的处理方式 - 与您的方法非常相似,但有一些小改进(保持一切稀疏):

    n,m = A.shape
    diags = A.sum(axis=1)
    D = sps.spdiags(diags.flatten(), [0], m, n, format='csr')
    D - A
    

    【讨论】:

    • 谢谢。使用 spdiags 和 flatten 看起来更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 2017-12-16
    相关资源
    最近更新 更多