networkx对边权重设置以及对图进行加权,代码示范
时间: 2023-11-28 12:49:36 浏览: 266
在networkx中,可以使用`add_weighted_edges_from`方法来添加带权边。示例代码如下:
```python
import networkx as nx
# 创建一个空的有向图
G = nx.DiGraph()
# 添加带权边
G.add_weighted_edges_from([(1, 2, 0.5), (2, 3, 0.75)])
# 输出边权重
for u, v, weight in G.edges.data('weight'):
print(f"({u}, {v}): {weight}")
```
输出结果为:
```
(1, 2): 0.5
(2, 3): 0.75
```
另外,我们也可以在创建图的时候指定边的权重,示例代码如下:
```python
import networkx as nx
# 创建一个空的有向图
G = nx.DiGraph()
# 添加带权边
G.add_edge(1, 2, weight=0.5)
G.add_edge(2, 3, weight=0.75)
# 输出边权重
for u, v, weight in G.edges.data('weight'):
print(f"({u}, {v}): {weight}")
```
输出结果与前面示例相同。
相关问题
networkx对边filter的代码
下面是一个示例代码,使用networkx过滤图中权重大于等于2的边:
```
import networkx as nx
# 创建一个有向图
G = nx.DiGraph()
# 添加边
G.add_edges_from([(1, 2, {'weight': 2}), (1, 3, {'weight': 1}), (2, 4, {'weight': 3}), (3, 4, {'weight': 2}), (4, 5, {'weight': 2})])
# 过滤边
edges = [(u, v, d) for u, v, d in G.edges(data=True) if d['weight'] >= 2]
# 打印结果
print(edges)
```
在上面的代码中,第一行导入networkx库,第三行创建一个有向图,第五行添加边并赋予权重,第八行过滤边。最后一行打印结果。
如何用networkx获取加权网络中特定边的权重
你可以使用网络图库networkx中的get_edge_data方法来获取加权网络中特定边的权重。例如,假设你的图形对象为G,特定的节点对为u和v,则可以使用以下命令获取其权重:
G.get_edge_data(u,v)['weight']