Rohan Mohapatra
Rohan Mohapatra

Reputation: 163

Create a mapping of elements from two arrays

I have two arrays which are outputs of a clustering algorithm. Is there a possibility of an automatic way to find the associative mapping.

Consider two label arrays:

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

Visually these look the same, but for a larger label set, I want to find a mapping like {0:4,1:6,2:8,3:7}.

Does Python have any method to do this?

I have looked at sklearn metrics for similar solution, no luck yet. Any help would be appreciated.

Upvotes: 3

Views: 7112

Answers (1)

Devesh Kumar Singh
Devesh Kumar Singh

Reputation: 20500

Yes, you can create a dictionary with the key as the element of the first list and value as the element on the second list, by zipping the two lists together, and converting the output to a dictionary

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)

The output will be

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

Note that if you have duplicate elements in array_1 but the corresponding elements in array_2 are different, the last element of array_2 will be picked in the mapping for the duplicate elements, e.g for [0,0,1,1] and [4,5,6,7]. the mapping will be {0: 5, 1: 7}, since 5 is picked for duplicate element 0 and 7 is picked for duplicate element 1

Upvotes: 7

Related Questions