Zunächst möchte ich mich für den unklaren Titel der Frage entschuldigen: Der Grund ist, dass ich den mathematischen Prozess bei der Arbeit nicht identifizieren konnte. HierSerielle vektorielle Subtraktion in Python oder "subtraktive Faltung"?
ist die Situation, in Kürze:
- Ich habe zwei Vektoren, f1 und f2, unterschiedlich lang.
- Ich möchte den kleinsten quadratischen Abstand zwischen f1 und f2, elementweise berechnen.
Hier ist, wie ich vorgehen,
import numpy as np
def distLstSq(f1,f2):
"Return the least square distance between f1 and f2 per unit element"
return np.sum(np.square(np.subtract(f1,f2)))/len(f1)
f1 = np.arange(100)
f2 = np.random.random_integers(1,100,5)
nBuf = len(f2)
dist = np.empty(len(f1)-nBuf)
for i in range(len(f1)-nBuf):
temp = f1[i:i+nBuf]
dist[i] = distLstSq(temp,f2)
jedoch aufgrund des großen Vektor f1 (aus einer Datei von 4MB generiert), ich frage mich, ob es nicht mehr elegant pythonic Lösung war, Verwenden Sie weniger CPU-Ressourcen in kürzerer Zeit. Möglicherweise eine Art "subtraktive Faltung", wobei f2 elementweise über f1 gleitet, mit der Subtraktionsoperation bei jedem Schritt.
Vielen Dank für Ihre Eingabe!
Bertrand
Was ist '' distLstSqPoly'and poly'? – Divakar
* "Ich habe zwei Vektoren, f1 und f2, ..." * aber * "... Abstand zwischen a und b" *. Ich nahm an, dass "a" und "b" "f1" und "f2" sein sollten. Ist das korrekt? Auch eine runable MVCE (http://stackoverflow.com/help/mcve) wäre hilfreich. –
Vielen Dank für das Feedback, ich habe den Beitrag nach Ihren Anmerkungen aktualisiert. –