【发布时间】:2019-10-03 17:10:16
【问题描述】:
我从几天开始使用 python 和 networkx。 我有一个无向图,我尝试迭代连接到节点的边。
我用过
print (G.edges)
for i in G.nodes:
print( G.edges(i))
获得
[(0, 1), (0, 2), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
[(0, 1), (0, 2), (0, 4)]
[(1, 0), (1, 2), (1, 3), (1, 4)]
[(2, 0), (2, 1), (2, 3), (2, 4)]
[(3, 1), (3, 2), (3, 4)]
[(4, 0), (4, 1), (4, 2), (4, 3)]
G.edges() 提供的边在某些情况下会颠倒两个节点(例如,对于 i=1,我有边 (1,0),但它不存在!!我只有 (0,1)。由于图是无方向的,它是同一条边,但是如果我尝试将它用作边向量的索引,它就不起作用了。
我试过了
for i in G. nodes
... do something with .... x[e] for e in G.edges(i)
【问题讨论】:
-
您的问题到底是什么?根据networkx doc,
G.edges删除了无向边的重复表示,而跨所有节点的邻居报告自然会报告两个方向。 -
我的图没有方向。我将 G.edges() 返回的边存储在一个变量数组中(我正在编写一个数学模型)。用 G.edges(node) 检索边 我有两个节点的边,其中两个节点的顺序与 G.edges() 中的相反,因此它们不能用作我的变量的索引。示例: G.edges() = [(0,1), (0,2)] 和 G.edges(1) 返回 (1,0) !是否可以像 G.edges() 列表中那样具有两个节点(索引)的边缘?
标签: python networkx graph-theory