web-dev-qa-db-fra.com

Obtenez tous les bords liés à un nœud donné dans un graphique networkx

Je me demande simplement s'il existe une fonction networkx pratique qui renvoie une liste d'arêtes connectées à un nœud (ou des nœuds) donné (par exemple my_node_name) dans un graphique (par exemple G).

Je peux le faire de cette façon:

edlist=[]
for ed in G.edges():
     if 'my_node_name' in ed:
            edlist.append(ed)

mais attendez-vous à ce qu'il y ait une meilleure façon?

23
atomh33ls

Si le graphique n'est pas orienté, vous pouvez utiliser

G.edges(node)

Dans networkx 2.x c'est un objet EdgeDataView. Dans networkx 1.x ceci est une liste - si vous voulez un générateur en 1.x plutôt que d'obtenir la liste entière, G.edges_iter(node) fonctionne (cela n'existe plus dans 2.x ).

Si le graphique est dirigé, la commande ci-dessus ne donnera pas les bords entrants. Utilisation

G.in_edges(node)
G.out_edges(node) 

Ce sont des vues en 2.x. Dans 1.x ce sont des listes et il y a des options de générateur: G.in_edges_iter(node) et G.out_edges_iter(node)

35
Joel

Vous pouvez utiliser la méthode edges

G.edges(['my_node_name'])

ou la fonction edges

networkx.edges(G, ['my_node_name'])
10
donkopotamus