iGraph:选择连接到的顶点

iGraph: selecting vertices connected to

假设我有下图:

g = ig.Graph([(0,1), (0,2), (2,3), (3,4), (4,2), (2,5), (5,0), (6,3), (5,6)], directed=False)
g.vs["name"] = ["Alice", "Bob", "Claire", "Dennis", "Esther", "Frank", "George"]

我想看看 Bob 与谁有联系。 Bob 只与一个人 Alice 有联系。但是,如果尝试找到边缘:

g.es.select(_source=1)
>>> <igraph.EdgeSeq at 0x7f15ece78050>

我只是得到了上面的回复。我如何从上面推断出顶点索引是什么。或者,如果这不可能,我如何找到连接到 Bob 的顶点?

这似乎有效。关键字参数包括 属性,例如 _source_target,以及运算符,例如 eq (=)。而且您似乎还需要检查边缘的源和目标(即使它是无向图),在过滤边缘之后,您可以使用列表推导遍历边缘并提取 source目标:

connected_from_bob = [edge.target for edge in g.es.select(_source_eq=1)]
connected_to_bob = [edge.source for edge in g.es.select(_target_eq=1)]

connected_from_bob
# []

connected_to_bob
# [0]

那么与Bob相连的顶点就是两个列表的并集:

connected_with_bob = connected_from_bob + connected_to_bob