如何只保留networkx-graph中的节点有2个以上的输出边或0个输出边?

12 python networkx

我在networkx中有Directed Graph.我想只保留那些具有两个或两个以上的传出边或根本没有传出边的节点.我该怎么做呢?

要么

如何删除networkx图中只有一个传出边的节点.

Mic*_*ber 21

您可以G使用以下out_degree方法在图中找到具有一个外出边的节点:

outdeg = G.out_degree()
to_remove = [n for n in outdeg if outdeg[n] == 1]
Run Code Online (Sandbox Code Playgroud)

然后删除:

G.remove_nodes_from(to_remove)
Run Code Online (Sandbox Code Playgroud)

如果您希望创建新图形而不是修改现有图形,请创建子图形:

to_keep = [n for n in outdeg if outdeg[n] != 1]
G.subgraph(to_keep)
Run Code Online (Sandbox Code Playgroud)

  • 删除这些节点后,出站度是否会改变? (2认同)
  • 在最新版本的networkx中,可能需要使用类似[[n代表(n,deg)indeg,如果deg == 1]的语法。 (2认同)