通过 python 中 igraph 中的属性查找在节点之间形成边
form edge between nodes by attribute look up in igraph in python
我有一个图 g
,它有一个与每个节点关联的 'name' 属性。我想通过名称属性调用两个节点并在它们之间创建一条边。
from igraph import *
g = Graph(4)
print g
IGRAPH UN-- 4 0 --
+ attr: name (v)
g.vs["name"]
[10, 39, 76, 6]
但是,当我尝试
g.add_edge(g.vs[76], g.vs[39])
我得到一个超出范围的顶点索引。如果我可以将名称与索引位置匹配,只要它很快,我就会很高兴有一个通过它的索引调用节点的解决方案,因为我的图可能会变得非常大,而且我不知道它会变得多慢。
理想情况下,我会通过 'name' 属性查找节点并在它们之间形成边。
正如您可能猜到的那样,您正在根据名称向量中名称的位置对名称进行索引。您可以将名称与其在名称向量中的位置相匹配:
v1_position = g.vs['name'].index(76)
v2_position = g.vs['name'].index(39)
g.add_edge(v1_position, v2_position)
我有一个图 g
,它有一个与每个节点关联的 'name' 属性。我想通过名称属性调用两个节点并在它们之间创建一条边。
from igraph import *
g = Graph(4)
print g
IGRAPH UN-- 4 0 --
+ attr: name (v)
g.vs["name"]
[10, 39, 76, 6]
但是,当我尝试
g.add_edge(g.vs[76], g.vs[39])
我得到一个超出范围的顶点索引。如果我可以将名称与索引位置匹配,只要它很快,我就会很高兴有一个通过它的索引调用节点的解决方案,因为我的图可能会变得非常大,而且我不知道它会变得多慢。
理想情况下,我会通过 'name' 属性查找节点并在它们之间形成边。
正如您可能猜到的那样,您正在根据名称向量中名称的位置对名称进行索引。您可以将名称与其在名称向量中的位置相匹配:
v1_position = g.vs['name'].index(76)
v2_position = g.vs['name'].index(39)
g.add_edge(v1_position, v2_position)