改善networkx中的python性能

我正在使用包numpy和网络在python中创建网络。                                                                                                                                                                                                                                

事实:

  1. 创建此图大约需要一个小时

  2. 表格可adjacency容纳212,000行

由于我是python的新手,所以我没有解释器执行多少优化(如果有的话)。无论如何,我认为错误在于实际在该行中创建图形:

g = nx.from_numpy_matrix(mat, create_using=nx.DiGraph())

我相信这是因为:

  1. 我已经在没有该行的情况下运行了代码,而且速度非常快(最多10秒)

  2. 我认为写作mat是O(nlgn),因为我们有n行,从数据库中读取(btree搜索)是O(lgn),写作mat是O(1)。

我只是以为读取邻接矩阵需要O(n ^ 2)的时间。也许邻接表(在中作为dict的一个字典实现networkx)会更快。在那种情况下,没有人知道networkx中的加权图和邻接表吗?

如果您需要更多信息,请与我联系,我们将不胜感激! 注意:为了将来:我怎么知道一个小时是否合理?


阿晨1998
浏览 426回答 1
1回答

POPMUISE

我不确定将numpy矩阵转换为Di-Graph时为什么这样慢。请在下面尝试这种方法,看看是否有帮助。def create_directed_graph(rows):    g = nx.DiGraph()    for row in rows:        curRow = row['r']        curCol = row['c']        weight = row['val']        g.add_edge(curRow,curCol,Weight=weight)    return g
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python