У меня есть 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])
Однако, если вы можете более подробно описать свой случай, могут существовать более подходящие меры, такие как расстояние Махаланобиса.
Python
индексы начинаются с 0
, поэтому в этом случае argsort(.)
предоставит то, что вы ищете, например ((F- t)** 2).sum(1).argsort()
. Спасибо
- person eat; 20.06.2011