如何在python中获得稀疏图拉普拉斯矩阵?

时间:2017-11-24 08:23:10

标签: python matlab graph sparse-matrix

我有一个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

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

1 个答案:

答案 0 :(得分: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