laplacian_matrix#
- laplacian_matrix(G, nodelist=None, weight='weight')[source]#
返回图 G 的拉普拉斯矩阵。
图拉普拉斯矩阵是 L = D - A,其中 A 是邻接矩阵,D 是节点度的对角矩阵。
- Parameters:
- G图
一个 NetworkX 图
- nodelist列表, 可选
行和列按照 nodelist 中的节点顺序排列。 如果 nodelist 为 None,则顺序由 G.nodes() 生成。
- weight字符串或 None, 可选 (默认=’weight’)
用于计算矩阵中每个值的边数据键。 如果为 None,则每条边的权重为 1。
- Returns:
- LSciPy 稀疏数组
G 的拉普拉斯矩阵。
See also
Notes
对于 MultiGraph,边权重会被求和。
此函数返回未归一化的矩阵。对于归一化输出, 请使用
normalized_laplacian_matrix
,directed_laplacian_matrix
, 或directed_combinatorial_laplacian_matrix
。此计算使用图 G 的出度。若要使用入度进行计算,请使用
G.reverse(copy=False)
并取转置。References
[1]Langville, Amy N., and Carl D. Meyer. Google’s PageRank and Beyond: The Science of Search Engine Rankings. Princeton University Press, 2006.
Examples
对于具有多个连通分量的图,L 与每个分量的拉普拉斯矩阵对应的块对角矩阵相似。
>>> G = nx.Graph([(1, 2), (2, 3), (4, 5)]) >>> print(nx.laplacian_matrix(G).toarray()) [[ 1 -1 0 0 0] [-1 2 -1 0 0] [ 0 -1 1 0 0] [ 0 0 0 1 -1] [ 0 0 0 -1 1]]
>>> edges = [ ... (1, 2), ... (2, 1), ... (2, 4), ... (4, 3), ... (3, 4), ... ] >>> DiG = nx.DiGraph(edges) >>> print(nx.laplacian_matrix(DiG).toarray()) [[ 1 -1 0 0] [-1 2 -1 0] [ 0 0 1 -1] [ 0 0 -1 1]]
注意节点 4 由第三列和行表示。这是因为默认情况下,行/列顺序是
G.nodes
的顺序(即节点添加顺序 – 在边列表中,4 首先出现在 (2, 4),在边 (4, 3) 中节点 3 之前。) 要控制矩阵的节点顺序,请使用nodelist
参数。>>> print(nx.laplacian_matrix(DiG, nodelist=[1, 2, 3, 4]).toarray()) [[ 1 -1 0 0] [-1 2 0 -1] [ 0 0 1 -1] [ 0 0 -1 1]]
此计算使用图 G 的出度。若要使用入度进行计算,请使用
G.reverse(copy=False)
并取转置。>>> print(nx.laplacian_matrix(DiG.reverse(copy=False)).toarray().T) [[ 1 -1 0 0] [-1 1 -1 0] [ 0 0 2 -1] [ 0 0 -1 1]]
Additional backends implement this function
graphblas : OpenMP-enabled sparse linear algebra backend.