【问题标题】:Get all edges linked to a given node in a networkx graph在networkx图中获取链接到给定节点的所有边
【发布时间】:2016-01-09 19:13:54
【问题描述】:
只是想知道是否有方便的 networkx 函数返回连接到图中(例如G)中给定节点(例如my_node_name)的边列表。
我可以这样做:
edlist=[]
for ed in G.edges():
if 'my_node_name' in ed:
edlist.append(ed)
但希望有更好的方法吗?
【问题讨论】:
标签:
python
graph-theory
networkx
【解决方案1】:
您可以在节点上使用方法edges 来生成无向图:
G.edges(['my_node_name'])
或函数edges
networkx.edges(G, ['my_node_name'])
但对于有向图,上述方法只会给出出边;你需要调用并结合in_edges()和out_edges()。
【解决方案2】:
如果图是无向的,可以使用
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)