gpt4 book ai didi

python - 有效地使用图形工具

转载 作者:行者123 更新时间:2023-11-28 17:28:51 25 4
gpt4 key购买 nike

经过深思熟虑,我最终决定在这里发布这个问题。几天前,我开始使用 graph-tool 来做各种事情。之前我一直在使用 Networkx。我已经看到了令人印象深刻的 performance comparision并认为一切都会很简单。但是,我立即遇到了速度问题和 asked a question与它的特定方面有关。我得到了一个令我满意的快速答案。但是,现在这个速度问题时不时地困扰着我,我找不到任何与有效使用它相关的 graph-tool 文档。例如,从我上一个问题的答案中,我开始意识到最好将所有边加在一起而不是一条一条地添加,这是一个非常重要的注意点,但没有在任何地方提到过!我现在有两个类似的问题:

(1) 如何选择给定节点的随机邻居?我只能看到以下解决方案:

nbr = np.random.choice(list(v.all_neighbours()))

由于 v.all_neighbours() 是一个生成器,我必须将它转换成列表以选择一个随机元素。这会减慢代码速度,但我看不到任何更好的方法。

(2) 我想为图中的每个顶点分配一个一维向量(list 可以吗?),稍后我将以特定方式交换和修改它们。这只是一个属性映射,我想查看一些有关如何有效使用它的文档。但是,我找不到任何东西。

(3) 我正在尝试模拟 triadic closure在一些本身随时间变化的网络中。因此,在每个时间步,我都需要有关图中每个顶点的邻居的信息。同样,我必须创建一个列表(或 numpy 数组):

nbrs = [w for w in v.neighbours()]

这大大降低了我的代码速度。这意味着我没有正确执行此操作,但我找不到任何文档可以告诉我如何在图形工具中有效地使用邻居。

不知何故,我为相同任务编写的 Networkx 程序的性能完全优于图形工具代码,我根本无法购买。

此列表可能会增加,因此如果有人可以向我指出一些关于有效使用图形工具的文档,除了回答上述具体问题之外,我将非常高兴。

提前致谢。

最佳答案

您可以访问邻居和顶点作为数组,这将加速您的代码,如文档中所述:https://graph-tool.skewed.de/static/doc/quickstart.html#fast-iteration-over-vertices-and-edges

例如,而不是做:

nbr = np.random.choice(list(v.out_neighbours()))

你应该这样做:

nbr = np.random.choice(g.get_out_neighbours(v))

这应该快得多,因为使用数组而不是列表。

关于python - 有效地使用图形工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36239913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com