如何仅保留在networkx图中具有2个或以上出边或0出边的节点?
我在使用networkx这个库处理有向图。我想只保留那些有两个或两个以上出边的节点,或者根本没有出边的节点。我该怎么做呢?
或者
我该如何删除那些在networkx图中恰好有一条出边的节点呢?
1 个回答
27
你可以通过使用 out_degree
方法来找到图 G
中那些只有一条出边的节点:
outdeg = G.out_degree()
to_remove = [n for n in outdeg if outdeg[n] == 1]
接下来,删除这些节点的方法是:
G.remove_nodes_from(to_remove)
如果你想创建一个新的图,而不是直接修改现有的图,可以创建一个子图:
to_keep = [n for n in outdeg if outdeg[n] != 1]
G.subgraph(to_keep)