2011-12-20 22 views
11

Tengo el gráfico dirigido en networkx. Solo quiero mantener esos nodos que tienen dos o más de dos bordes salientes o ningún borde saliente en absoluto. ¿Cómo hago esto?¿Cómo solo mantener nodos en networkx-graph con 2+ bordes salientes o 0 bordes salientes?

o

¿Cómo me quita nodos que tengan exactamente un arco de salida en un gráfico NetworkX.

+4

Si arte con un gráfico, encuentre los nodos que tienen un borde saliente, y luego elimínelos; puede crear un gráfico nuevo que todavía tenga un nodo con un borde saliente (digamos que tenía dos antes y se eliminó uno de los nodos implicados). ¿Qué te gustaría hacer en ese caso? – DSM

Respuesta

17

Puede encontrar los nodos en el gráfico G con un borde saliente utilizando el out_degree método:

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

Extracción es entonces:

G.remove_nodes_from(to_remove) 

Si prefiere crear un nuevo gráfico en lugar de modificar el gráfico existente en su lugar, cree un subgrafo:

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

después de eliminar esos nodos, ¿si el grado externo cambiará? – user3341953

Cuestiones relacionadas