使用 NetworkX 和 Python 划分图的边

扎眼的阳光 python 246

原文标题Partition edges of a graph with NetworkX and Python

我想使用 Python 和 NetworkX 根据边属性对图的边进行分区g。在这个片段中:

import networkx as nx

g = nx.Graph()
g.add_node(1, pos=[0, 0])
g.add_node(2, pos=[0, 2])
g.add_node(3, pos=[1, 1])
g.add_edge(1, 3, cat='a')
g.add_edge(1, 2, cat='b')

我想将图g划分为图gagb基于cat属性并保留节点属性pos。注意节点1将同时属于gagb。此操作是否有库支持?

原文链接:https://stackoverflow.com//questions/71554289/partition-edges-of-a-graph-with-networkx-and-python

回复

我来回复
  • warped的头像
    warped 评论

    您可以结合使用列表理解和集合:

    ga = g.subgraph(set(*[[u,v] for (u,v,data) in g.edges(data=True) if data.get('cat')=='a']))
    gb = g.subgraph(set(*[[u,v] for (u,v,data) in g.edges(data=True) if data.get('cat')=='b']))
    
    2年前 0条评论