Finden Sie den minimalen Kosinusabstand zwischen zwei Matrizen

Ich habe zwei 2Dnp.arrays Nennen wir sieA undB, beide haben die Form. Für jeden Vektor im 2D-ArrayA Ich muss den Vektor in der Matrix findenB, die den minimalen Kosinusabstand haben. Dazu habe ich nur eine double for-Schleife, in der ich versuche, den Mindestwert zu finden. Also mache ich im Grunde folgendes:

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])

In dem Code über einer der Schleifen verbirgt sich hinter einem Verständnis. Alles funktioniert einwandfrei, aber die double for-Schleife macht es zu langsam (ich habe versucht, es mit einem doppelten Verständnis umzuschreiben, wodurch die Dinge ein bisschen schneller, aber immer noch langsam wurden).

Ich glaube, dass es eine Numpy-Funktion gibt, die das Folgende schneller erreichen kann (unter Verwendung einer linearen Algebra).

So gibt es eine Möglichkeit, schneller das zu erreichen, was ich will?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage