2011-12-20 14 views
11

Ho grafico orientato in networkx. Voglio mantenere solo quei nodi che hanno due o più di due bordi in uscita o nessun bordo in uscita. Come faccio a fare questo?Come mantenere solo i nodi in networkx-graph con 2+ bordi in uscita o 0 bordi in uscita?

o

Come posso rimuove i nodi che hanno esattamente un bordo in uscita in un grafico NetworkX.

+4

Se si st arte con un grafico, trova i nodi che hanno un bordo in uscita e quindi rimuovi quelli, puoi creare un nuovo grafico che ha ancora un nodo con un bordo in uscita (diciamo che aveva due prima e uno dei nodi coinvolti è stato rimosso). Cosa ti piacerebbe fare in quel caso? – DSM

risposta

17

È possibile trovare i nodi nel grafo G con un bordo in uscita utilizzando il metodo out_degree:

outdeg = G.out_degree() 
to_remove = [n for n in outdeg if outdeg[n] == 1] 

rimozione è quindi:

G.remove_nodes_from(to_remove) 

Se si preferisce creare un nuovo grafico invece di modificare il grafico esistente sul posto, creare un sottotitolo:

to_keep = [n for n in outdeg if outdeg[n] != 1] 
G.subgraph(to_keep) 
+0

dopo aver cancellato quei nodi, se il fuori grado cambierà? – user3341953