我有两个字典,像这样:
first_dict = {"key1": 1, "key2":2, "key3":3}
sec_dict = {"key1": 2, "key2": 3, "key3":4}
我想使用networkx或numpy具有如下矩阵:
[[1/2, 2/2, 3/2],
[1/3, 2/3, 3/3],
[3/2, 3/3, 3/4]]
描述了first_dict和sec_dict中每个节点的比率。
有人可以帮我吗?
最佳答案
以下NumPy解决方案起作用。在提取值之前,必须对字典进行排序,除非您确定它们已经按照排序的顺序排列。
_, vals1 = zip(*sorted(first_dict.items()))
_, vals2 = zip(*sorted(sec_dict.items()))
如果它们以前已经排序过,则可以忽略排序:
vals1 = list(first_dict.values())
vals2 = list(sec_dict.values())
np.array(vals1).reshape(-1,1) / np.array(vals2)
#array([[0.5 , 0.33333333, 0.25 ],
# [1. , 0.66666667, 0.5 ],
# [1.5 , 1. , 0.75 ]])