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

标签 python matlab graph sparse-matrix

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

我曾经使用 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/

相关文章:

Python 3.5.2 游戏 : Box reveal animation

java - 如何用neo4j计算共同好友?

c# - 检查 Linked list<Node<T>> 是否包含某个节点

matlab - 2017a MATLAB中的并行函数是什么?

c++ - Matlab Coder 与手动编码?

Matlab:保持非零矩阵元素彼此相邻并忽略孤立元素

algorithm - 改变排序时间的克鲁斯卡尔算法的运行时间

python - Errno 185090050 _ssl.c :343: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib, 被PyInstaller打包成exe后

python - 使用 appengine-mapreduce 达到内存限制

python - tensorflow keras : I am getting this error 'module "tensorflow. _api.v1.keras.layers' 没有属性 'flatten'“