У меня есть 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