Создать сопоставление элементов из двух массивов - PullRequest
2 голосов
/ 13 июня 2019

У меня есть два массива, которые являются выходами алгоритма кластеризации. Есть ли возможность автоматического поиска ассоциативного отображения .

Рассмотрим два массива меток:

array1 = [0,0,1,2,3]
array2 = [4,4,6,8,7]

Визуально они выглядят одинаково, но для большего набора меток я хочу найти отображение типа {0:4,1:6,2:8,3:7}.

Есть ли у Python какой-либо метод для этого?

Я посмотрел на sklearn метрики для аналогичного решения, пока не повезло. Любая помощь будет оценена.

1 Ответ

4 голосов
/ 13 июня 2019

Да, вы можете создать словарь с ключом в качестве элемента первого списка и значением в качестве элемента во втором списке, путем архивирования двух списков вместе и преобразования выходных данных в словарь

array_1 = [0,0,1,2,3]
array_2 = [4,4,6,8,7]

#Zip the two lists together, and create a dictionary out of the zipped lists
mapping = dict(zip(array_1, array_2))
print(mapping)

Вывод будет

{0: 4, 1: 6, 2: 8, 3: 7}

Обратите внимание, что если у вас есть повторяющиеся элементы в array_1, но соответствующие элементы в array_2 отличаются, последний элемент array_2 будет выбран в сопоставлении для дублирующих элементов, например, для [0,0,1,1] и [4,5,6,7].отображение будет {0: 5, 1: 7}, так как 5 выбран для дублирующего элемента 0, а 7 выбран для дублирующего элемента 1

...