Найти минимальное косинусное расстояние между двумя матрицами

У меня два 2Dnp.arrays давайте назовем ихA а такжеBоба имеют форму. Для каждого вектора в 2D массивеA Мне нужно найти вектор в матрицеB, которые имеют минимальное расстояние косинуса. Для этого у меня просто есть двойной цикл for, внутри которого я пытаюсь найти минимальное значение. Так что в основном я делаю следующее:

from scipy.spatial.distance import cosine
l, res = A.shape[0], []
for i in xrange(l):
    minimum = min((cosine(A[i], B[j]), j) for j in xrange(l))
    res.append(minimum[1])

В приведенном выше коде один цикл скрыт за пониманием. Все работает нормально, но двойной цикл for делает его слишком медленным (я пытался переписать его с двойным пониманием, что делало вещи немного быстрее, но все же медленно).

Я считаю, что есть функция numpy, которая может быстрее достичь следующего (используя некоторую линейную алгебру).

Так есть ли способ добиться того, чего я хочу быстрее?

Ответы на вопрос(2)

Ваш ответ на вопрос