gpt4 book ai didi

python - 创建图时获取边权重

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:16 25 4
gpt4 key购买 nike

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

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 文档,边可以重复,因此,如果您不希望边重复,则需要自己删除它们。

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

创建图表

import igraph as ig

links = [[1, 2], [1, 3], [2, 4], [1, 2]]
vertices = [v for s in links for v in s] # = [1,2,1,3,2,4,1,2]
g = ig.Graph()
g.add_vertices(vertices)
for l in links:
g.add_edge(l[0], l[1], weight=0.5*l[0]*l[1]) # weight value is just an example

print(g)

为了获得顶点列表,链接列表很受宠若惊。并不是说顶点不能重复,因此不需要显式删除其中的重复元素。

您可以通过指定相对关键字参数 (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的文档:igraph.Graph , igraph.Vertexigraph.Edge

关于python - 创建图时获取边权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44444686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com