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

oknwwptz  于 12个月前  发布在  Python
关注(0)|答案(2)|浏览(134)

我正在遍历一个图的边,其中:

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

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

y1aodyip

y1aodyip1#

这些都是igraph的基本功能,详细描述了here。(graph.es),您将遍历所有<Edge>对象(这里是edge)。<Edge>有属性sourcetarget。这些是顶点id,简单的整数。你可以通过graph.vs[]得到对应的<Vertex>对象:

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 = Falseget_eid(),如果顶点之间的给定方向没有边,则返回-1

m528fe3b

m528fe3b2#

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

edges_data_frame <- get.data.frame(your_igraph, what = "edges")

字符串
edges_data_frame的前两列将是“from”和“to”。如果有边,则后面的列将是边的其他属性。

相关问题