从两个数组创建元素映射
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
我有两个数组,它们是聚类算法的输出。是否有可能自动找到 关联映射.
考虑两个标签数组:
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