2011-12-20 10 views
11

Skierowałem wykres w siecix. Chcę utrzymywać tylko te węzły, które mają dwie lub więcej niż dwie wychodzące krawędzie lub w ogóle brak krawędzi wychodzących. Jak mam to zrobic?Jak utrzymywać tylko węzły w sieciowym-wykresie z 2+ wyjściowymi krawędziami lub 0 wyjściowymi krawędziami?

lub

jaki sposób usuwa węzły, które mają dokładnie jeden wychodzący krawędź w NetworkX wykresie.

+4

Jeśli jesteś grafikę z wykresem, znajdź węzły, które mają jedną krawędź wychodzącą, a następnie usuń te, możesz utworzyć nowy wykres, który nadal ma węzeł z jedną krawędzią wychodzącą (powiedzmy, że miał dwa przed i jedno z zaangażowanych węzłów zostało usunięte). Co chciałbyś w takim razie zrobić? – DSM

Odpowiedz

17

można znaleźć węzły w wykresie G z jedną krawędzią wychodzące za pomocą metody out_degree:

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

Usuwanie wynosi:

G.remove_nodes_from(to_remove) 

Jeśli wolisz, aby utworzyć nowy wykres zamiast modyfikowania istniejący wykres na miejscu, utwórz podgraph:

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

po usunięciu tych węzłów, niezależnie od tego, czy zmieni się stopień końcowy? – user3341953

Powiązane problemy