Ich habe einen Algorithmus zur Berechnung der Durchschnittsgeschwindigkeit in reinem Python:
%Vor%Gibt es eine Möglichkeit, diese Funktionen mit Numpy neu zu schreiben?
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:
Hoffe, das hilft
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.
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!
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)
:
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.