如何在python中使用igraph从边缘获取顶点?

gio*_*oca 4 python edges igraph vertex

我循环遍历图表的边缘:

 for es in graph.es:
         .... 
         # v = []
         # v = es.vertices()?
         ...
Run Code Online (Sandbox Code Playgroud)

我可以使用什么方法来获取每条边的源顶点和目标顶点?

dee*_*nes 12

这些是igraph的基本功能,在这里详细描述.如果迭代<EdgeSeq>object(graph.es),则将遍历所有<Edge>对象(此处edge).<Edge>有财产sourcetarget.这些是顶点id,只是整数.您可以<Vertex>通过graph.vs[]以下方式获取相应的对象

for edge in graph.es:
  source_vertex_id = edge.source
  target_vertex_id = edge.target
  source_vertex = graph.vs[source_vertex_id]
  target_vertex = graph.vs[target_vertex_id]
  # using get_eid() you can do the opposite:
  same_edge_id = graph.get_eid(source_vertex_id, target_vertex_id)
  same_edge = graph.es[same_edge_id]
  # by .index you get the id from the Vertex or Edge object:
  source_vertex.index == source_vertex_id
  # True
  edge.index == same_edge_id
  # True
Run Code Online (Sandbox Code Playgroud)

请注意,如果您有定向图,否则源和目标只是两个等效的端点.随着向图你可以使用error = Falseget_eid(),然后返回-1的情况下,有在顶点之间的给定的方向上没有边缘.