Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建图形时获取边权重_Python_Igraph - Fatal编程技术网

Python 创建图形时获取边权重

Python 创建图形时获取边权重,python,igraph,Python,Igraph,假设我们有一个带边的列表,并且我们创建了带有igraph的graph: links = [[1, 2], [1, 3], [2, 4], [1, 2]] g = ig.Graph() for link in links: g.add_vertices(link) g.add_edges(links) print(g) # IGRAPH UN-- 8 4 -- # + attr: name (v) # + edges (vertex names): # 2--1, 2--3, 1--2,

假设我们有一个带边的列表,并且我们创建了带有igraph的graph:

links = [[1, 2], [1, 3], [2, 4], [1, 2]]
g = ig.Graph()
for link in links:
    g.add_vertices(link)
g.add_edges(links)

print(g)
# IGRAPH UN-- 8 4 --
# + attr: name (v)
# + edges (vertex names):
# 2--1, 2--3, 1--2, 2--1

2--1
被重复。如何创建图形以获得边权重?

根据igraph文档,边可以重复,因此,如果不希望边重复,则需要自己删除它们

这段代码演示了如何为边设置权重(或任何您想要的属性),以及如何读取边

图形的创建 为了得到顶点列表,链接列表被修饰。并不是说顶点不能复制,因此不需要显式删除其中的重复元素

通过指定相对关键字参数(
weight=0.5*l[0]*l[1]
),可以指定要添加到边缘的任何属性

检索边信息 您只需通过
e['weight']
检索权重,其中
e
是一条边(
igraph.edge
对象)。在本例中,演示了如何在边集上循环

print("\nEdges\n")
for e in g.es():
  print("source: %s target: %d" % (e.source, e.target))
  print("multiplicity %d" % (g.count_multiple(e)))
  print("weight %f\n" % e['weight'])
输出如下:

Edges

source: 1 target: 2
multiplicity 2
weight 1.000000

source: 1 target: 3
multiplicity 1
weight 1.500000

source: 2 target: 4
multiplicity 1
weight 4.000000

source: 1 target: 2
multiplicity 2
weight 1.000000

有关更多详细信息,请参阅igraph:,我有相关代码,可以查找边以查看它是否已存在于图形中。所以,它有点像:

edgelist = []
weights = []
for e in links:
    if e in edgelist:
        weights[edgelist.index(edge)] += 1
    else:
        edgelist.append(e)
        weights.append(1)

G = ig.Graph()
G.add_edges(edgelist)
G.es['weight'] = weights
编辑:当然,您可以使用
G.es['weight']

edgelist = []
weights = []
for e in links:
    if e in edgelist:
        weights[edgelist.index(edge)] += 1
    else:
        edgelist.append(e)
        weights.append(1)

G = ig.Graph()
G.add_edges(edgelist)
G.es['weight'] = weights