Hallo,
Ich habe ein Problem beim Arbeiten mit numpy.
In meinem Testprogramm verwende ich eine Zahlenreihe ZL mit
23 Integerzahlen, die oft für eine Berechnung ausgelesen werden.
zl = [94,92,88,86,82,76,74,68,64,62,58,52,
46,44,38,34,32,26,22,16, 8, 4,2]
Für eine zeitliche Optimierung habe ich numpy eingebunden
import numpy as np
und die Zahlenreihe geschrieben
zl = np.array([94,92,88,86,82,76,74,68,64,62,58,
52,46,44,38,34,32,26,22,16, 8, 4,2],int)
Das anschließende Auslesen und die Berechnung sind ganz identisch.
Die Berechnung ohne numpy und array dauerte ca. 3,3 sec, beim Rechnen
mit numpy dauerte die Berechnung ca. 30 sec.
Was habe ich da falsch gemacht?
Vielen Dank im Voraus.
Arbeiten mit Numpy
Mit Numpy ist es möglich Berechnungsprogramme zu schreiben, die fast so schnell laufen wie Fortran oder C++ Programme. Hierzu ist es aber erforderlich, dass Du den Algorithmus vektorisiert formulierst. Vektorisieren bedeutet, dass Du in Python so weit es geht auf Schleifen verzichtest. Außerdem solltest Du auf den Zugriff auf einzelne Array-Elemente verzichten, der ist bei Numpy-Arrays sogar langsamer als der Zugriff auf einzelne Listenelemente. Richtig große Unterschiede siehst Du auch erst bei größeren Arrays.
Wenn Du das alles nicht berücksichtigst, dann wird Deine Berechnung mit Numpy nicht schneller, sondern sogar etwas langsamer, aber nicht 9 Mal so langsam, da musst Du noch was anderes falsch gemacht haben. Ist es in beiden Implementationen wirklich der gleiche Algorithmus?
Wenn Du das alles nicht berücksichtigst, dann wird Deine Berechnung mit Numpy nicht schneller, sondern sogar etwas langsamer, aber nicht 9 Mal so langsam, da musst Du noch was anderes falsch gemacht haben. Ist es in beiden Implementationen wirklich der gleiche Algorithmus?
Vielen Dank für die Infos.
Ich habe meine Rechnung vektorisiert und bin mit NUMPY dadurch viel schneller geworden,
als mit dem einfachen Python (Faktor 3 bis 4).
Wenn man mit NUMPY arbeitet und Schleifen verwendet, wird man tatsächlich viel
langsamer als mit Python ohne Numpy. Es war kein Fehler in meiner Rechnung.
VG, Raininger
Ich habe meine Rechnung vektorisiert und bin mit NUMPY dadurch viel schneller geworden,
als mit dem einfachen Python (Faktor 3 bis 4).
Wenn man mit NUMPY arbeitet und Schleifen verwendet, wird man tatsächlich viel
langsamer als mit Python ohne Numpy. Es war kein Fehler in meiner Rechnung.
VG, Raininger