Ich muss den Kosinusabstand zwischen jeder zwei Zeilen einer Matrix berechnen. ich brauchte jedes Mal eine einzelne Zeile, so meine naive Implementierung war:Die Vorteile von scipy.spatial.distance.pdist verstehen
for Id1 in range(m.shape[0]):
distance = [scipy.spatial.distance.cosine(m[Id1,],m[Id2,]) for Id2 in range(m.shape[0])]
Es stellt sich heraus, die die naive Implementierung erfordert ca. 4 Sekunden für 407 * 53 Matrix.
Obwohl ich nicht die volle Matrix möchte ich versucht:
pairwiseDistance = scipy.spatial.distance.pdist(m,metric = 'cosine')
Es erfordert nur 0,004 Sekunden
ich eine kleine lineare Verbesserung erwartet (ich brauche nur die Hälfte der Matrix (!) , der Prozess kann parallel usw. durchgeführt werden). Was ist der Grund, dass die Verbesserung so signifikant ist?
-Code in C kann 1000 schneller als Code ausgeführt implementiert zuteilen geschrieben in Python? –
@Guys: In einigen Fällen ja. – BrenBarn