我有一个csr_matrix格式的稀疏矩阵A
。 A
是无向图的加权邻接矩阵,因此是对称的和非负的。我想计算它的图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
有谁知道更优雅的解决方案?
答案 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