Нахождение ближайшего пункта (-ов) путем ранжирования их - PullRequest
0 голосов
/ 20 июня 2011

У меня есть N x D размерные объекты, которые мне нужно ранжировать в соответствии с их расстоянием до 1 x D размерного вектора. Любой быстрый способ реализовать это в Python без рекурсивного применения argmin?

Спасибо!

1 Ответ

3 голосов
/ 20 июня 2011

Что-то действительно простое - Квадрат Евклидова расстояния , и его реализация будет выглядеть следующим образом:

In []: F= randn(5, 3)
In []: t= randn(1, 3)
In []: ((F- t)** 2).sum(1)
Out[]: array([  8.80512,   4.61693,   2.6002,   3.3293,  12.41800])

Где F - объекты, а t - целевой вектор.Таким образом, рейтинг будет:

In []: ((F- t)** 2).sum(1).argsort()
Out[]: array([2, 3, 1, 0, 4])

Однако, если вы сможете описать больше по вашему делу, могут существовать более подходящие меры, такие как Расстояние Махаланобиса .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...