Numpy Mittelwert mit Zustand

7

Ich habe einen Algorithmus zur Berechnung der Durchschnittsgeschwindigkeit in reinem Python:

%Vor%

Gibt es eine Möglichkeit, diese Funktionen mit Numpy neu zu schreiben?

    
Artem Mezhenin 18.06.2012, 14:13
quelle

4 Antworten

9
%Vor%     
eumiro 18.06.2012, 14:14
quelle
16

Die Funktion numpy.average kann ein weights -Argument erhalten, in das Sie ein Boolesches Array einfügen können, das aus einer Bedingung generiert wurde, die auf das Array selbst angewendet wurde - in diesem Fall ist ein Element größer als 0:

%Vor%

Hoffe, das hilft

    
heltonbiker 18.06.2012 14:45
quelle
9

Ich bin überrascht, dass niemand die kürzeste Lösung vorgeschlagen hat:

%Vor%

Erläuterung:

speedsNp > 0 erzeugt ein Boolesches Array der gleichen Größe, das die (Un) Gleichheit erfüllt. Wenn sie in speedsNp eingefügt wird, liefert sie nur die entsprechenden Werte von speedNp , wobei der Wert des booleschen Arrays True ist. Alles, was Sie dann tun müssen, ist nur die mean() des Ergebnisses zu nehmen.

    
TimY 09.07.2015 08:41
quelle
3

Ich weiß, dass Sie eine numpy -Lösung wollen, damit diese Kriterien nicht erfüllt werden (@ eumiros früherer Beitrag tut das sicherlich), aber als Alternative ist hier eine optimierte Python-Version, die (zumindest für mich) überraschend funktioniert um ziemlich schnell zu sein!

%Vor%

Könnte interessant sein, dies mit der numpy (oder der ursprünglichen) Implementierung in Bezug auf die Geschwindigkeit zu vergleichen.

%Vor%

wo

%Vor%

Ich hätte gedacht, dass numpy hier die Kante haben würde. Wer weiß, warum es hinterlässt?

Aktualisierung:

mit speed = range(100000) :

%Vor%

Immer noch nicht davon überzeugt, dass numpy ein gutes Werkzeug für dieses bestimmte Problem ist, es sei denn, es gibt eine große Anzahl von Geschwindigkeiten :)

Wie geht numpy mit Speicher um? Listenverständnis wird irgendwann in einige Grenzen stoßen.

    
Levon 18.06.2012 14:16
quelle

Tags und Links