我想用一堆边来附加相同或不同的重量。但我在NetworkX中找不到任何此功能。如果Networkx中有功能,那么它是什么,如果没有,那么建议我如何在python中附加权重与边缘? 例如:如果我有一些边缘列表,没有边缘
edges=[(1,2),(1,4),(3,4),(4,2)]
然后我想在所有边缘附加相同的重量(1)。
预期输出为:weighted_edges=[(1,2,1),(1,4,1),(3,4,1),(4,2,1)]
答案 0 :(得分:1)
请参阅networkx的tutorial。
import networkx as nx
G = nx.Graph()
G.add_nodes_from([1, 2, 3, 4, 5])
G.add_edge(1, 2, weight=4.7 )
G.add_edges_from([(1,2), (2,3,{'weight':8})])
G[1][2]['weight'] = 4.7
G.edge[1][2]['weight'] = 4
在你的例子中
G.add_edges_from(edges, weight=1)
添加默认权重为1的所有边。
答案 1 :(得分:1)
最简单的版本是使用add_weighted_edges_from
import networkx as nx
G=nx.Graph()
G.add_weighted_edges_from([(1,2,1),(1,4,1),(3,4,1),(4,2,1)])
G.edges(data=True) #print out the edges with weight
>[(1, 2, {'weight': 1}),
(1, 4, {'weight': 1}),
(2, 4, {'weight': 1}),
(3, 4, {'weight': 1})]
如果您已定义edges
,请使用权重创建边缘:
edges=[(1,2),(1,4),(3,4),(4,2)]
edges_with_weights=[(a,b,1) for (a,b) in edges]
H=nx.Graph()
H.add_weighted_edges_from(edges_with_weights)
H.edges(data=True)
> [(1, 2, {'weight': 1}),
(1, 4, {'weight': 1}),
(2, 4, {'weight': 1}),
(3, 4, {'weight': 1})]