Как переименовать один узел графа networkx?

#python #networkx

#python #networkx

Вопрос:

Я хотел знать, как я могу изменить имя одного узла узла орграфа. Я новичок в networkx и смог найти ответы только о том, как изменить имена всех узлов.

В моем случае я перебираю график A, чтобы создать график B. p и c являются узлами графа A. Ребро (p, c) графа A содержит данные, которые я хочу добавить к узлу p B. Однако, когда я добавляю данные ребра из графа A в уже существующий узел p графа B, я хотел бы обновить имя p , чтобы оно было равно имени c , поэтому явозможность снова ссылаться на него для следующего ребра графа A, потому что тогда это ребро (c, x), и я могу использовать c для повторной ссылки на него…

Соответствующая часть моего кода выглядит следующим образом

 new_stages = A.in_edge(c, data='stages')
stages = B.node[p]['stages']
stages.append(new_stages)
<<Update node p to have name of c??>> 
B.add_node(p, stages=new_stage_set)
  

Любая помощь приветствуется, спасибо!

Ответ №1:

У вас есть nx.relabel_nodes для этого. Вот простой пример использования:

 G = nx.from_edgelist([('a','b'), ('f','g')])

mapping = {'b':'c'}
G = nx.relabel_nodes(G, mapping)

G.edges()
# EdgeView([('a', 'c'), ('f', 'g')])