如何在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")