【发布时间】:2017-12-01 16:22:16
【问题描述】:
import networkx as nx
import numpy as np
G = nx.MultiGraph()
G.add_edges_from([('1', '2'), ('1', '3'),('1','5'),('2','4')])
l= list(nx.non_edges(G))
score=np.array([[0.9,0.7,0.2,0.6,0.4],[0.7,0.9,0.6,0.8,0.3],[0.2,0.6,0.9,0.4,0.7],[0.6,0.8,0.4,0.9,0.3],[0.4,0.3,0.7,0.3,0.9]])
我想根据分数矩阵对非边缘进行排名,即非边缘 1-4 的分数为 0.6,2-5 的分数为 0.3,因此输出将为 [1-4,2-5]
edit-我的实际数据采用 pandas 数据框的形式(下面是我的实际数据集的玩具数据集示例),我将其转换为 networkx 图形对象。
data1 = { 'node1': [1,1,1,2],
'node2': [2,3,5,4],
'weight': [1,1,1,1], }
df1 = pd.DataFrame(data1, columns = ['node1','node2','weight'])
分数矩阵是一个 5X5 矩阵的形式,其中元素 score[1,4] 表示节点 1 和 4 之间的边,其分数为 0.6
edit2-
从图 1 我们可以看到缺失的边是 1-4,2-3,2-5,3-4,3-5,3-5,它们各自的得分是 0.6 0.6 0.3 0.4 0.3 0.7 所以我们根据分数对它们进行排名,最终输出为 3-5 1-4 2-3 3-4 2-5 4-5
【问题讨论】:
-
更多信息会有所帮助:1) 您是否假设您的图表将包含 5 个元素? 2)分数数组中的位置是否对应于图的邻接矩阵? 3) 我在分数数组中的任何地方都看不到 0.5——如何将该值分配给任何边缘(或非边缘)?
-
@apollo2020 看到上面的编辑