在python脚本中,我需要将一个igraph图放入一个列表中,然后将该列表转换回igraph图。
我和get_edgelist一起尝试这个,就像这个
g = [(3,4),(6,7),(7,8),(4,10),(5,11),(0,13),(1,13),(7) ,17), (13,17),(16,17),(12,18),(0,19),(16,20),(17,20),(2,21), (7,21),(10,22),(6,24),(17,24),(8,26),(18,26),(5,27),(26, 28),(27,28),(1,29),(3,29),(9,29),(13,29),(5,19),(0,22), (21,22),(1,21),(1,3),(20,21),(3,18),(4,18),(4,12),(18, 18),(0,27),(3,6),(12,23),(13,23),(7,9),(4,9)]
然后重新导入它:
from igraph import *
G = Graph.Read_Edgelist(g)
返回:
TypeError:预期的字符串或文件句柄
知道什么是错的吗?或者正确的方法是什么?
相反,我写了一个这样的函数:
def edgelist2graph(el):
g = Graph()
g.add_vertices(nbr_nodes)
g.add_edges(el)
return g
这是一种有效的方法吗?
谢谢!
答案 0 :(得分:1)
使用write_edgelist
将图表的边缘列表保存到文件中 - 然后您可以稍后使用Read_Edgelist
将其恢复。 get_edgelist
只是为您提供了一个表示图表边缘列表的元组的Python列表。无法使用Read_Edgelist
加载它,因为Read_Edgelist
适用于文件或类文件对象。
我不确定您想要实现的目标,但如果您只是想将图表以序列化形式存储在某个Python对象中,然后再将其加载回来,请使用Python' s {{1而不是模块 - 这不仅会保存边缘列表,还会保存定向性,节点数量以及所有图形,顶点和边缘属性。