导入 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 模块 - 这不仅会保存边列表,还会保存方向性、节点数以及所有图形、顶点和边属性。