Arbeiten mit Numpy

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Raininger
User
Beiträge: 11
Registriert: Mittwoch 23. Oktober 2013, 12:13
Wohnort: München

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.
Sirius3
User
Beiträge: 18294
Registriert: Sonntag 21. Oktober 2012, 17:20

@Raininger: Du hast nicht verstanden was numpy macht. Rechnungen werden nicht schneller, nur weil man numpy importiert.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

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?
a fool with a tool is still a fool, www.magben.de, YouTube
Raininger
User
Beiträge: 11
Registriert: Mittwoch 23. Oktober 2013, 12:13
Wohnort: München

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
Antworten