gpt4 book ai didi

python - 基于顶点名称 Python igraph 执行图的并集

转载 作者:行者123 更新时间:2023-11-28 19:14:41 24 4
gpt4 key购买 nike

此问题已在 github 上提交大约 6 个月前,但由于尚未修复,我想知道是否有我缺少的快速修复方法。

我想根据名称合并两个图:

g1 = igraph.Graph()
g2 = igraph.Graph()

# add vertices
g1.add_vertices(["A","B"])
g2.add_vertices(["B","C","D"])

for vertex in g1.vs:
print vertex.index
0
1

for vertex in g2.vs:
print vertex.index
0
1
2

但是,当我执行合并时,igraph 使用顶点 ID 而不是名称,所以我最终得到三个顶点而不是四个(如果它基于名称)。我猜是因为 Bg2 中有索引 0,所以它与 g1< 的 A 合并了。并且以类似的方式,g2Cg1B 合并。

g_union = igraph.Graph.union(g1,g2)

g_union.vs['name'] # of course
KeyError: 'Attribute does not exist'

for vertex in g_union.vs:
print vertex.index
0
1
2

关于如何绕过这个问题的任何想法?这是可能的,因为它是在 igraph 的 R 实现中完成的。

最佳答案

只需创建一个新图,并按名称添加顶点。当然,这会消除其他节点属性,您还必须手动添加这些属性。

g1 = igraph.Graph()
g2 = igraph.Graph()

# add vertices
g1.add_vertices(["A","B"])
g2.add_vertices(["B","C","D"])

g3 = igraph.Graph()
verts_to_add = []
for v in g1.vs:
if v['name'] not in verts_to_add:
verts_to_add.append(v['name'])
for v in g2.vs:
if v['name'] not in verts_to_add:
verts_to_add.append(v['name'])

g3.add_vertices(verts_to_add)

for v in g3.vs:
print(v['name'])

#A
#B
#C
#D

关于python - 基于顶点名称 Python igraph 执行图的并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35182255/

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