Я хочу получить границу между двумя узлами в графе networkx. В частности, я хочу получить некоторые данные, связанные с этим краем. Я априори знаю, что эти два узла связаны. Есть ли функция для этого?
Как получить данные для границы между двумя узлами?
Ответы (1)
Данные края хранятся в словаре. Чтобы получить доступ к этому словарю, используйте get_edge_data().
import networkx as nx
G=nx.Graph()
G.add_edge(1,2, weight=5)
G.get_edge_data(1,2)
> {'weight': 5}
Если вы хотите перебрать все ребра, вы можете использовать G.edges(data=True)
H = nx.Graph()
H.add_edge(2, 3, color = 'red')
H.add_edge(1, 2, weight = 4)
for u,v,data in H.edges(data=True):
print(u, v, data)
> 1 2 {'weight': 4}
> 2 3 {'color': 'red'}
person
Joel
schedule
09.02.2016
Поэтому я попробовал это с графом, который имеет несколько ребер между двумя узлами, A и B. Одно ребро имеет вес 40, второе ребро имеет значение 50, а третье ребро имеет значение 60. Использование nx.get_edge_data будет вернуть только последнее ребро (со значением 60). Есть ли команда, которая вернет все веса?
- person spacedustpi; 24.04.2019
Когда я делаю
G.get_edge_data(1,2) для MultiGraph с двумя ребрами между 1 и 2, это дает мне оба ребра и их веса. Если у вас другой опыт, вам, вероятно, следует опубликовать новый вопрос. [Вы уверены, что граф имеет несколько ребер? - если это не MultiGraph или MultiDiGraph, то каждый раз, когда вы добавляете ребро, вы перезаписываете предыдущее ребро]
- person Joel; 25.04.2019
Спасибо, я наконец обнаружил Mulitgraph через несколько часов после публикации моего вопроса.
- person spacedustpi; 25.04.2019
Для тех, кому интересно, если вы используете nx.Graph() и добавляете ребро от 1 до 2. Вы также можете сказать nx.get_edge_data(2,1). Это получит тот же край
- person Gertjan Brouwer; 16.10.2020
uиv, получите ребро, которое их соединяет. - person becko   schedule 09.02.2016get_edge_data()? Также естьedges(), но он возвращает список подключенных узлов. - person Reti43   schedule 09.02.2016