为了账号安全,请及时绑定邮箱和手机立即绑定

改善networkx中的python性能

改善networkx中的python性能

阿晨1998 2021-04-02 11:50:16
我正在使用包numpy和网络在python中创建网络。                                                                                                                                                                                                                                事实:创建此图大约需要一个小时表格可adjacency容纳212,000行由于我是python的新手,所以我没有解释器执行多少优化(如果有的话)。无论如何,我认为错误在于实际在该行中创建图形:g = nx.from_numpy_matrix(mat, create_using=nx.DiGraph())我相信这是因为:我已经在没有该行的情况下运行了代码,而且速度非常快(最多10秒)我认为写作mat是O(nlgn),因为我们有n行,从数据库中读取(btree搜索)是O(lgn),写作mat是O(1)。我只是以为读取邻接矩阵需要O(n ^ 2)的时间。也许邻接表(在中作为dict的一个字典实现networkx)会更快。在那种情况下,没有人知道networkx中的加权图和邻接表吗?如果您需要更多信息,请与我联系,我们将不胜感激! 注意:为了将来:我怎么知道一个小时是否合理?
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

我不确定将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


查看完整回答
反对 回复 2021-04-05
  • 1 回答
  • 0 关注
  • 425 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号