如何在 python 中使用 igraph 从边缘获取顶点?
How to get the vertices from an edge using igraph in python?
我正在通过图形的边缘循环:
for es in graph.es:
....
# v = []
# v = es.vertices()?
...
我可以使用什么方法获取每条边的源顶点和目标顶点?
这些是 igraph 的非常基本的功能,here 进行了详尽的描述。
如果您迭代 <EdgeSeq>
对象 (graph.es
),您将遍历所有 <Edge>
对象(此处为 edge
)。 <Edge>
具有属性 source
和 target
。这些是顶点 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 = False
与 get_eid()
一起使用,然后 returns -1
以防顶点之间给定方向上没有边。
这是使用 R 中的内置函数 get.data.frame()
从 igraph 对象获取边缘信息的一种简单方法(我没有注意到问题是在询问python,抱歉):
edges_data_frame <- get.data.frame(your_igraph, what = "edges")
edges_data_frame
的前两列将是 "from" 和 "to"。如果有,下面的列将是边缘的其他属性。
我正在通过图形的边缘循环:
for es in graph.es:
....
# v = []
# v = es.vertices()?
...
我可以使用什么方法获取每条边的源顶点和目标顶点?
这些是 igraph 的非常基本的功能,here 进行了详尽的描述。
如果您迭代 <EdgeSeq>
对象 (graph.es
),您将遍历所有 <Edge>
对象(此处为 edge
)。 <Edge>
具有属性 source
和 target
。这些是顶点 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 = False
与 get_eid()
一起使用,然后 returns -1
以防顶点之间给定方向上没有边。
这是使用 R 中的内置函数 get.data.frame()
从 igraph 对象获取边缘信息的一种简单方法(我没有注意到问题是在询问python,抱歉):
edges_data_frame <- get.data.frame(your_igraph, what = "edges")
edges_data_frame
的前两列将是 "from" 和 "to"。如果有,下面的列将是边缘的其他属性。