如何用笛卡尔乘积描述两个字典的比率?

问题描述 投票:0回答:1

我有两个字典,像这样:

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中每个节点的比率。有人可以帮我吗?

python pandas numpy networkx
1个回答
0
投票

以下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      ]])
© www.soinside.com 2019 - 2024. All rights reserved.