NetworkX通过平均并行长度将多图转换为简单图

2024-10-01 00:31:03 发布

您现在位置:Python中文网/ 问答频道 /正文

利用Maehler程序将多重图转换为简单图有一种解决方案

import networkx as nx

G = nx.MultiGraph()
G.add_nodes_from([1,2,3])
G.add_edges_from([(1, 2), (1, 2), (1, 3), (2, 3), (2, 3)])

G2 = nx.Graph(G)

另一个是用Aslak和Aric的代码求权重

^{pr2}$

想知道如何平均平行边的重量吗?在


Tags: fromimport程序networkxadd利用as解决方案
1条回答
网友
1楼 · 发布于 2024-10-01 00:31:03

这里有一种类似于使用统计包计算边缘权重平均值的方法。在

import networkx as nx
from statistics import mean
# weighted MultiGraph
M = nx.MultiGraph()
M.add_edge(1,2,weight=7)
M.add_edge(1,2,weight=20)
M.add_edge(2,3,weight=42)
M.add_edge(2,3)
# create weighted graph G from M
G = nx.Graph()
for u,v,data in M.edges(data=True):
    if not G.has_edge(u,v):
        # set weight to 1 if no weight is given for edge in M
        weight = mean(d.get('weight',1) for d in M.get_edge_data(u,v).values())
        G.add_edge(u, v, weight=weight)
print(G.edges(data=True))

输出(networkx-2.0-dev)

EdgeView([(1,2,{'weight':13.5}),(2,3,{'weight':21.5})])

相关问题 更多 >