Seite 1 von 1

Arbeiten mit Numpy

Verfasst: Sonntag 21. Dezember 2014, 22:39
von Raininger
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.

Re: Arbeiten mit Numpy

Verfasst: Sonntag 21. Dezember 2014, 22:57
von Sirius3
@Raininger: Du hast nicht verstanden was numpy macht. Rechnungen werden nicht schneller, nur weil man numpy importiert.

Re: Arbeiten mit Numpy

Verfasst: Montag 22. Dezember 2014, 10:28
von MagBen
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?

Re: Arbeiten mit Numpy

Verfasst: Dienstag 23. Dezember 2014, 11:03
von Raininger
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