pythonigraph如何用重量加边?

2024-09-28 16:20:23 发布

您现在位置:Python中文网/ 问答频道 /正文

python-igraph如何使用权重添加边?在

我有一个像[('1', '177', 1.0), ('1', '54', 1.0), ('1', '61', 2.0), ('1', '86', 2.0), ('10', '100', 38.0)]的元组列表。元组中的最后一个是从'1''177'的边的权重。 但是怎么加呢?我使用

g.add_vertices(vertexList)
g.add_edges(edgelist)

但这是错误的。在


Tags: add列表错误权重元组verticesedgesedgelist
2条回答

您不再需要“预处理”数据,因为此格式对于新方法是准确的:

g = Graph.TupleList([(from, to, weight], ...)

作者再举一个例子:

^{pr2}$

方法可从0.6.1版获得,作者如下: https://answers.launchpad.net/igraph/+question/206397

我们需要先做一些预处理。在

下面的代码可以正常工作并按您的要求执行。在


from igraph import *

# Here we have 5 edges
a = [('1', '177', 1.0), ('1', '54', 1.0), ('1', '61', 2.0), 
     ('1', '86', 2.0), ('10', '100', 38.0)]    

edge = []
weights = []
# the loop for i is in range(5) because you have 5 edges
for i in range(5):
    for j in range(2):
        k =2
        edge.append(a[i][j])
    weights.append(a[i][k])

edges = [(i,j) for i,j in zip(edge[::2], edge[1::2])]

list1 = []
for i in range(len(edges)):
    list1.append((int(edges[i][0]), int(edges[i][1])))

g= Graph()
g.add_vertices(178)
g.add_edges(list1)
g.es['weight'] = weights

g.ecount()
5

g.es['weight']
[1.0, 1.0, 2.0, 2.0, 38.0]

相关问题 更多 >