igraph中的add_edge导致自我循环而不是新边

2024-05-19 00:21:02 发布

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

我有两个不同的图形:g1和g2。我想把他们加在一起,创造一些边缘。为什么这不起作用?在

import igraph

def edging_up(g1, g2):
    g = g1 + g2
    for v in g.vs:
        for w in g.vs:
            try:
                if v['name'].get_researcher_id() == w['name'].get_tutor_id():
                    g.add_edge(v, w)
            except:
                pass

    return g

我需要try/exception,因为一个图没有get_tutor_id()方法。 我也试过了

^{pr2}$

然后,它就可以工作了,但是它没有从v向w添加一条边,而是向v添加了一个自循环


Tags: nameinimportid图形forgetdef
1条回答
网友
1楼 · 发布于 2024-05-19 00:21:02

第二个示例不起作用,因为w是来自g2的顶点,而您正试图在g中添加一条边。igraph返回的vertex对象实际上只是顶点索引的代理,所以当您运行g.add_edge(v, w)时,igraph将简单地检索v和{}的{}属性,然后本质上运行g.add_edge(v.index, w.index),这在{}的上下文中没有意义(因为索引分别引用g1和{})。在

对于第一个示例,您需要提供更多信息;例如,namevertex属性包含什么?在

相关问题 更多 >

    热门问题