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