Использование:
from scipy.spatial.distance import pdist,squareform
Y = pdist(xy, 'euclidean')
Пример:
>>a = [[1,2],[3,4],[5,6]]
>>Y = pdist(a, 'euclidean')
>>Y
array([2.82842712, 5.65685425, 2.82842712])
Первый элемент - это расстояние между a0 и a1, второй - это расстояние между a0 и a2, а третий - расстояние междуa1 и a2.
Или вы можете использовать квадратную форму:
>>square = squareform(pdist(a))
>>square
array([[0. , 2.82842712, 5.65685425],
[2.82842712, 0. , 2.82842712],
[5.65685425, 2.82842712, 0. ]])
После этого используйте:
np.argsort(square)
И вы получите то, что хотите.
Проверьте документацию pdist .