如何从networkx中特定边获取节点?

2 投票
2 回答
8422 浏览
提问于 2025-04-15 22:14

我想比较图中不同边的节点。请问我怎么才能从边(n1, n2)中获取节点(n1和n2)呢?

2 个回答

0

我认为这个问题的答案是:

graph = networkx.read_graphml('some_fully_loaded_graph.graphml')
edge0 = list(graph.edges(data=True))[0]

subgraph = graph.edge_subgraph([edge0[:2]])
nodes0 = list(subgraph.nodes(data=True))
4

NetworkX中,边是由节点定义的,所以我不太明白你在问什么。图中的一条特定边就是一对节点的组合,可能还会有一个可选的权重。

import networkx as nx
g = nx.Graph()
g.add_edge(1,2)
g.add_edge(2,3)
g.edges()

结果是

[(1, 2), (2, 3)]

你可以看到,边的列表清楚地列出了每条边的节点。

更新:这样做符合你的需求吗?

#!/usr/bin/python

import networkx as nx
import random

g = nx.Graph()
g.add_edges_from([(1,2),(2,3),(1,4),(2,5)])

random_edge = random.choice(g.edges())

print 'Randomly selected edge is:', random_edge
print 'Nodes are', random_edge[0], 'and', random_edge[1]

撰写回答