[英]Find edges of multiplicity larger than 2 in a NetworkX MultiGraph
我有一个MultiGraph
,它可以在任何两个节点之间有多个边:
g = MultiGraph()
g.add_nodes_from([1,2,3,4,5,6])
g.add_edges_from([(1,2), (2,1), (1,2), (3,4), (5,6), (6,5), (3,5), (3, 5), (3, 5), (3, 5)])
如何在此图中找到重数大于 2 的所有边? 我可以做这样的事情:
for s in itertools.combinations(g.nodes(), 2):
e = g[s[0]].get(s[1], {})
if len(e) > 2:
print(s[0], s[1])
但效率太低,所以我正在寻找更好的解决方案
for u in G.nodes():
for neighbor in G.neighbors(u):
if G.number_of_edges(u,neighbor)>2:
print (u,neighbor)
注意 - 每个这样的边缘将被打印两次。
[x for x in tmp.edges if tmp.number_of_edges(x[0], x[1]) > 1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.