使用欧氏距离在数组中查找最相似的索引

Finding the most similar index in an array using Euclidian distance

所以我有一个数组并给定某一行,我想使用欧氏距离输出最相似的行?我在 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

TIA!

你可以通过使用带有 axis=1 参数的 numpy 的 linalg.norm 函数来非常快地完成它(没有隐藏在理解列表中的慢速 for 循环):

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

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