我想把边缘列表加载到图形工具中。列表中的顶点索引不是连续的,所以我希望它们被自动添加为vertex_properties。据我所知,这应该用add_edge_list来完成,但我发现没有创建vertex_property“名称”。另一方面,load_graph_from_csv确实可以工作:
from graph_tool.all import *
import numpy as np
import pandas as pdedge_list = [[1,7,1],[7,4,5],[1,4,3]]
G = Graph(directed=False)
G.ep["length"] = G.new_edge_property("int")
eprops = [G.ep["length"]]
G.add_edge_list(edge_list, hashed=True, eprops=eprops)
print(G.vp.keys())
print(G.ep.keys())
Out:
[]
['length']因此,您可以看到G中没有vertex_properties,来自用于add_edge_list的图形工具文档:
另外,如果散列为==真,则不假定边缘列表中的顶点值与顶点索引直接对应。在这种情况下,它们将根据遇到的顺序映射到顶点索引,并返回具有顶点值的顶点属性映射。
现在,我发现load_graph_from_csv正像我所期望的那样工作:
df = pd.DataFrame.from_records(edge_list, columns=['node_1', 'node_2', 'length'])
df.to_csv('edge_list.csv', sep=',', index=False)
G2 = load_graph_from_csv('edge_list.csv', skip_first=True, directed=False, hashed=True, eprop_names=['length'])
print(G2.vp.keys())
print(G2.ep.keys())
print([G2.vp['name'][v] for v in G2.get_vertices()])
Out:
['name']
['length']
['1', '7', '4']谁能给我指明正确的方向吗?
发布于 2019-02-08 22:20:44
答案就在文档中:
"...a vertex property map with the vertex values is returned."注意,它说的是“返回”,而不是“添加到内部属性映射列表”。
只要做:
name = G.add_edge_list(edge_list, hashed=True, eprops=eprops)name是您想要的属性映射。
https://stackoverflow.com/questions/54586235
复制相似问题