我正在尝试访问图形工具边缘。示例:假设以下图表。
from graph_tool.all import *
g = Graph()
eprop = g.new_edge_property("int")
g.edge_properties["distance"] = eprop
v0 = g.add_vertex()
v1 = g.add_vertex()
v2 = g.add_vertex()
v3 = g.add_vertex()
v4 = g.add_vertex()
e0 = g.add_edge(v0, v1)
g.ep.distance[e0] = 1
e1 = g.add_edge(v1, v2)
g.ep.distance[e1] = 1
e2 = g.add_edge(v2, v3)
g.ep.distance[e2] = 1
e3 = g.add_edge(v3, v4)
g.ep.distance[e3] = 1
e4 = g.add_edge(v0, v4)
g.ep.distance[e4] = 1
e5 = g.add_edge(v0, v4)
g.ep.distance[e5] = 2
graph_draw(g, vertex_text=g.vertex_index, vertex_font_size=18, output_size=(200, 200), output="Test.png")
从顶点0到顶点4有两条边,一条长度为1,另一条长度为2。
现在我的问题是如何选择特定的边缘,知道边缘索引。 遗憾的是,图形工具文档现在声明:“...边缘不能通过其索引直接获得,但如果已知给定边缘的源顶点和目标顶点,则可以使用edge()方法获取...”
但是在保存并加载图形之后,变量v0,v1,...以及e0,e1,...不再可用。尝试访问图表中的边缘,如文档所示:
e = g.edge(0,4)
print(g.edge_index[e])
# > Returns 4
只返回从顶点0到顶点4的一条边。如何访问另一条边?知道边缘指数是4和5.
提前感谢您的帮助!
答案 0 :(得分:2)
您可以通过以下方式获取节点u和v之间的所有平行边缘:
g.edge(u, v, all_edges=True)
您可以使用以下内容遍历所有边:
for e in g.edges():
print(e)
您可以搜索具有特定索引的边缘:
find_edge(g, g.edge_index, 33)