从两个数组创建元素映射

Create a mapping of elements from two arrays

我有两个数组,它们是聚类算法的输出。是否有可能自动找到 关联映射.

考虑两个标签数组:

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

在视觉上这些看起来是一样的,但对于更大的标签集,我想找到像 {0:4,1:6,2:8,3:7}.

这样的映射

Python有什么方法可以做到这一点吗?

我查看了 sklearn metrics 的类似解决方案,但还没有成功。任何帮助将不胜感激。

是的,您可以创建一个字典,其中键作为第一个列表的元素,值作为第二个列表的元素,通过 zipping 将两个列表放在一起,并将输出转换为字典

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},因为为重复元素 0 选择了 5,为重复元素 1

选择了 7