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

输入图形进行 scipy 图形搜索

输入图形进行 scipy 图形搜索

DIEA 2021-07-30 12:44:42
根据我可以找到的scipy graph_search 示例,输入图似乎采用 NxN 形式,其中图的索引对等于该值。所以一个矩阵G = [ [0,5,2],      [3,0,8],      [12,7,0] ]  意味着的边权重2->1是索引的值G[1,0] = 3如果这是错误的,请解释。我遇到的问题是以这种方式有效地输入节点连接,从字典开始,其中键是一个节点,值是一个连接节点的数组。{'node1' : [node2,weight1],[node3,weight2]} 边缘在哪里 node1->node2 = weight1我可以遍历键的循环并创建一个新的 数组[ [node1,node2,,weight1],[node1,node3,weight2] ],但这也没有让我更接近 scipy 格式。有没有一种简单的方法可以从我可以制作的字典或迭代数组中进行这种转换?
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

假设您已经知道图中的节点数 N 并且您的图是有向的,您可以这样做:


def create_csgraph_matrix(d, N):

    M = np.zeros((N,N))

    for i, node_weights in d.items():

        for j, weight in node_weights:

            M[i, j] = weight

    return M

d你的表格的字典在哪里。例子:


In [38]: d = {0: [[1, 10], [2, 20]], 2: [[1, 15]]}


In [39]: create_csgraph_matrix(d,3)

Out[39]: 

array([[ 0., 10., 20.],

       [ 0.,  0.,  0.],

       [ 0., 15.,  0.]])

请注意,此图中的节点为 0,1,2。


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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信