首页 > 解决方案 > 使用欧几里得距离在数组中查找最相似的索引

问题描述

所以我有一个数组并给定某一行,我想使用欧几里得距离输出最相似的行?我知道它在 scipy.spatial.distance 但我不知道如何实现它!

所以例如:

S = np.array([[1, 10, 2, 5, 1],
              [10, 3, 1, 3, 3],
              [2, 2, 9, 8, 5],
              [9, 5, 4, 1, 4],
              [8, 7, 5, 5, 3],
              [7, 2, 9, 9, 8]])

row = [7, 2, 9, 9, 8]

将输出最相似的行是 5

蒂亚!

标签: pythonarraysnumpyscipyeuclidean-distance

解决方案


通过使用带有参数的 numpy 函数,您可以非常快速地做到这一点(没有for隐藏在理解列表中的慢循环):linalg.normaxis=1

row_id = np.argmin(np.linalg.norm(S-row, axis=1))

print(S[row_id]) # Returns array([7, 2, 9, 9, 8])

推荐阅读