导入 iGraph 的 edgeList 的正确方法
Proper way to import an iGraph's edgeList
在 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)
哪个returns:
TypeError: string or file handle expected
知道出了什么问题吗?或者正确的方法是什么?
相反,我写了一个这样的函数:
def edgelist2graph(el):
g = Graph()
g.add_vertices(nbr_nodes)
g.add_edges(el)
return g
这是一种有效的方法吗?
谢谢!
使用 write_edgelist
将图形的边列表保存到文件中 - 然后您可以稍后使用 Read_Edgelist
恢复它。 get_edgelist
只是给你一个 Python 元组列表,代表你的图的边缘列表。它不能用 Read_Edgelist
加载回来,因为 Read_Edgelist
适用于文件或类似文件的对象。
我不确定你到底想实现什么,但如果你只是想将你的图表以序列化形式存储在某个 Python 对象中,然后稍后再加载它,请使用 Python 的 pickle
模块 - 这不仅会保存边列表,还会保存方向性、节点数以及所有图形、顶点和边属性。
在 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)
哪个returns:
TypeError: string or file handle expected
知道出了什么问题吗?或者正确的方法是什么?
相反,我写了一个这样的函数:
def edgelist2graph(el):
g = Graph()
g.add_vertices(nbr_nodes)
g.add_edges(el)
return g
这是一种有效的方法吗?
谢谢!
使用 write_edgelist
将图形的边列表保存到文件中 - 然后您可以稍后使用 Read_Edgelist
恢复它。 get_edgelist
只是给你一个 Python 元组列表,代表你的图的边缘列表。它不能用 Read_Edgelist
加载回来,因为 Read_Edgelist
适用于文件或类似文件的对象。
我不确定你到底想实现什么,但如果你只是想将你的图表以序列化形式存储在某个 Python 对象中,然后稍后再加载它,请使用 Python 的 pickle
模块 - 这不仅会保存边列表,还会保存方向性、节点数以及所有图形、顶点和边属性。