我有一个 csr_matrix 格式的稀疏矩阵 A
。 A
是无向图的加权邻接矩阵,因此是对称且非负的。我想计算它的拉帕利坎图。
我曾经使用 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
有人知道更优雅的解决方案吗?
最佳答案
这就是networkX library的方式对稀疏矩阵 A 执行此操作 - 与您的方法非常相似,但有一些小的改进(保持所有内容稀疏):
n,m = A.shape
diags = A.sum(axis=1)
D = sps.spdiags(diags.flatten(), [0], m, n, format='csr')
D - A
关于python - 如何在python中获得稀疏图拉普拉斯矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47469094/