gpt4 book ai didi

python-3.x - Networkx 2.1+中修改单个节点属性的简单方法

转载 作者:行者123 更新时间:2023-12-04 13:20:44 30 4
gpt4 key购买 nike

我正在寻找一种简单的方法来修改 NetworkX Graph 中单个节点的单个属性的值。

NetworkX 文档只提到了为图中所有节点设置属性的函数,例如:

nx.set_node_attributes(G, bb, 'betweenness')

这在许多情况下可能是合适的,在这种情况下,这样的属性很容易为图中的所有节点计算(比如提到的介数)。同样,在 NetworkX 中有一种访问单节点属性的简单方法:
graph.nodes[nodeName][attribute]

但是,以这种方式访问​​的属性是只读的。

所以我正在寻找一种设置属性的方法,就像阅读一样简单。

提前致谢。

最佳答案

在您的示例中,bb是一个字典,其键是节点。您不需要 dict 为图中的所有节点提供键,只需要为其定义属性的节点即可。在下面的示例中,我创建了一个图形,然后设置了 'weight'节点0成为 5和节点 3成为 2 .这使得其他节点的属性不受影响,因此因为它们从未被创建,所以它们不存在。

import networkx as nx
G = nx.fast_gnp_random_graph(10,0.2)
nx.set_node_attributes(G, {0:5, 3:2}, 'weight')
G.nodes[0]['weight']
> 5
G.nodes[3]['weight']
> 2
G.nodes[1]['weight']
> KeyError: 'weight'

所以我们为 0 设置权重和 3但不是任何其他人。您也可以一次设置多个属性,但这需要稍微不同的调用。这里我们有
nx.set_node_attributes(G, {1:{'weight':-1, 'volume':4}})
G.nodes[1]['weight']
> -1
G.nodes[1]['volume']
> 4

只是为了看看这些属性之后的样子:
G.nodes(data=True)
> NodeDataView({0: {'weight': 5}, 1: {'weight': -1, 'volume': 4}, 2: {}, 3: {'weight': 2}, 4: {}, 5: {}, 6: {}, 7: {}, 8: {}, 9: {}})

关于python-3.x - Networkx 2.1+中修改单个节点属性的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53508805/

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