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

如何在python中使用igraph从边获取顶点?,python,igraph,vertex,edges,Python,Igraph,Vertex,Edges,我在一个图的边上循环: for es in graph.es: .... # v = [] # v = es.vertices()? ... 我可以使用什么方法来获取每条边的源顶点和目标顶点?这些是igraph的基本功能,已详细描述。 如果您迭代对象(graph.es),您将遍历所有对象(此处为边)具有属性源和目标。这些是顶点ID,只是整数。您可以通过graph.vs[]获得相应的对象: for edge in gra

我在一个图的边上循环:

 for es in graph.es:
         .... 
         # v = []
         # v = es.vertices()?
         ...

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

这些是igraph的基本功能,已详细描述。 如果您迭代
对象(
graph.es
),您将遍历所有
对象(此处为
)<代码>具有属性<代码>源和<代码>目标。这些是顶点ID,只是整数。您可以通过
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

请注意,若您有定向图,那个么源和目标只是两个等价的端点。对于有向图,您可以使用
error=False
get_eid()
,如果顶点之间在给定方向上没有边,则返回
-1

这里有一个简单的方法,可以使用R中的内置函数
get.data.frame()
从igraph对象获取边信息(对不起,我没有注意到问题是关于python的):


edges\u data\u frame yes-es.source和es.target完成了这项工作;如果我有一个大的图,不想通过for循环,只想得到具有一定程度的顶点,该怎么办?你可以做
graph.vs[(枚举中的I表示I,d表示d(graph.vs.degree())如果d>3)]
graph.vs[(图中的v表示v的索引,如果v.degree()>3)]
edges_data_frame <- get.data.frame(your_igraph, what = "edges")