gpt4 book ai didi

python - 删除节点子集之间的所有边

转载 作者:太空宇宙 更新时间:2023-11-04 03:26:50 25 4
gpt4 key购买 nike

我有一个图 g 和图中的节点列表 subset_nodes。我想删除节点 v_iv_j 之间的所有边,其中 v_iv_jsubset_nodes

我目前正在使用以下方法:

import igraph

g = igraph.Graph.Full(10)
subset_nodes = [g.vs[i] for i in range(4)]

to_delete = set()
for node in subset_nodes:
for v in node.neighbors():
if v in subset_nodes:
tp = (node.index, v.index)
to_delete.add( tuple(sorted(tp)) )

print(len(g.es))
g.delete_edges( to_delete )
print(len(g.es))

这打印:

45
39

这是有道理的,因为

10 choose 2 = 45   # total # of edges (since it is a full graph)
4 choose 2 = 6 # # of removed edges
45 - 6 = 39 # # of edges remaining

我的问题是,是否有更好、更优雅或更 Pythonic 的方式来做同样的事情?

最佳答案

另一种解决方案是:

from igraph import Graph
g = Graph.Full(10)
g.es.select(_within=range(4)).delete()

关于python - 删除节点子集之间的所有边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32707263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com