如何从psycopg2查询结果有效地创建networkx图?

2024-05-19 09:48:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用psycopg2从Postgres数据库中检索到的数据构建networkx图。我可以很好地创建图形,但我想知道是否有一种更有效和/或Python式的方法来完成它。在

当前代码:

DG = nx.DiGraph()
cur.execute(edgeQuery)
for row in cur:
    self.DG.add_edge(
        row[0],            # fnode
        row[1],            # tnode
        weight=row[3],     # cost
        name=row[4]
    )

networkx文档指出,通过输入ebunch,可以同时创建多个边。我可以通过迭代游标结果来创建一个ebunch,但这不会比我当前的解决方案更有效。我觉得应该有一种更有效的方法来将我的光标结果转换成networkx边缘。也许是zip之类的?为了满足我对未来的好奇和满足。在


Tags: 数据方法代码networkx数据库图形executepostgres
1条回答
网友
1楼 · 发布于 2024-05-19 09:48:49

假设我正确地理解了“cur”的数据结构:您应该能够将其转换为数组,然后切片以获得紧凑的表示法。例如:

import numpy as np
import networkx as nx

graph = nx.DiGraph()
x= np.array([[1,2,0.5,"o"],[3,4,0.2,"a"]])
graph.add_edges_from(x[:,:2],weight = x[:,2], name = x[:,3])

add_edges_from()还为您节省了for循环“麻烦”:) 像这样,边现在是:

^{pr2}$

[('1', '2'), ('3', '4')]

我要找的是你的希望。在

相关问题 更多 >

    热门问题