как декартово умножить, которые описывают отношения двух словарей? - PullRequest
1 голос
/ 11 ноября 2019

У меня есть два словаря, подобные этим:

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. Может ли кто-нибудь помочь мне в этом?

1 Ответ

2 голосов
/ 11 ноября 2019

Следующее решение 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      ]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...