获取链接到 networkx 图中给定节点的所有边

Get all edges linked to a given node in a networkx graph

只是想知道是否有方便的 networkx 函数 returns 连接到图中给定节点(或多个节点)(例如 my_node_name)的边列表(例如 G ).

我可以这样做:

edlist=[]
for ed in G.edges():
     if 'my_node_name' in ed:
            edlist.append(ed)

但希望有更好的方法吗?

您可以在节点上使用方法 edges 获得 无向 图:

G.edges(['my_node_name'])

或函数edges

networkx.edges(G, ['my_node_name'])

但对于有向图,上述方法只会给出出边;在那里你需要调用和组合 in_edges() and out_edges().

如果图是无向的,可以用

G.edges(node)

networkx 2.x 中,这是一个 EdgeDataView 对象。在 networkx 1.x 中,这是一个列表 - 如果您想要在 1.x 中生成一个生成器而不是获取整个列表,G.edges_iter(node) 可以工作(这不再存在于 2.x).

如果图形是有向的,上面的命令将不会给出入边。使用

G.in_edges(node)
G.out_edges(node) 

这些是 2.x 中的观点。在 1.x 中,这些是列表并且有生成器选项:G.in_edges_iter(node)G.out_edges_iter(node)