У меня есть N x D размерные объекты, которые мне нужно ранжировать в соответствии с их расстоянием до 1 x D размерного вектора. Есть ли быстрый способ реализовать это в python без рекурсивного применения argmin?
Спасибо!
Вопрос
У меня есть N x D размерные объекты, которые мне нужно ранжировать в соответствии с их расстоянием до 1 x D размерного вектора. Есть ли быстрый способ реализовать это в python без рекурсивного применения argmin?
Спасибо!
Что-то очень простое - это Квадрат евклидова расстояния, и его реализация будет выглядеть так:
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])
Однако, если вы можете более подробно описать свой случай, могут существовать более подходящие меры, такие как расстояние Махаланобиса.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.