gpt4 book ai didi

python - 使用 networkx 更新图的边属性

转载 作者:行者123 更新时间:2023-12-02 16:46:55 25 4
gpt4 key购买 nike

我有以下带有边属性的图表:

import networkx as nx
import random
G=nx.DiGraph()
G.add_edge('x','a', dependency=0.4)
G.add_edge('x','b', dependency=0.6)
G.add_edge('a','c', dependency=1)
G.add_edge('b','c', dependency=0.3)
G.add_edge('b','d', dependency=0.7)
G.add_edge('d','e', dependency=1)
G.add_edge('c','y', dependency=1)
G.add_edge('e','y', dependency=1)

设置我的图形结构后,我将采样三个不同的边属性并将它们与随机数相乘,如下所示:

for i in range(3):
sampled_edge = random.sample(G.edges, 1)
print(sampled_edge)
sampled_edge_with_random_number = G.edges[sampled_edge[0]]['dependency'] * random.uniform(0,1)
print(sampled_edge_with_random_number)

现在我想用新的采样图属性更新初始图属性,使其看起来像这样。该算法应该在结构中寻找相同的边缘属性并更新依赖值:

for i in G.edges:
if i == sampled_edge:
i['dependency'] = sampled_edge_with_random_number

有人可以帮我解决这个问题吗?

最佳答案

您可以直接访问属性来更新和更改它

>>> G=nx.DiGraph()
>>> G.add_edge('x','a', dependency=0.4)
>>> G['x']['a']
{'dependency': 0.4}
>>> G['x']['a']['dependency'] = 10
>>> G['x']['a']
{'dependency': 10}

另一种方法是 nx.set_edge_attributes

>>> sampled_edge = ('x', 'a')
>>> new_val = 42
>>> nx.set_edge_attributes(G, {sampled_edge:{'dependency':new_val}})
>>> G['x']['a']['dependency']
42

('x','a') 是您的 sampled_edge

关于python - 使用 networkx 更新图的边属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60166810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com