Array-orientierte Programmierung – Vektorisierung

Die Verwendung von NumPy-Arrays ermöglicht euch, viele Arten von Datenverarbeitungsaufgaben als prägnante Array-Ausdrücke auszudrücken, die andernfalls das Schreiben von for-Schleifen erfordern würden. Diese Praxis, Schleifen durch Array-Ausdrücke zu ersetzen, wird auch Vektorisierung genannt. Im Allgemeinen sind vektorisierte Array-Operationen deutlich schneller als ihre reinen Python-Entsprechungen.

[1]:
import numpy as np

Zunächst erstellen wir ein NumPy-Array mit hunderttausend Ganzzahlen:

[2]:
myarray = np.arange(100000)

Anschließend quadrieren wir alle Elemente in diesem Array mit numpy.square:

[3]:
%time np.square(myarray)
CPU times: user 155 μs, sys: 119 μs, total: 274 μs
Wall time: 146 μs
[3]:
array([         0,          1,          4, ..., 9999400009, 9999600004,
       9999800001])

Zum Vergleich messen wir nun die Zeit der quadratischen Funktion von Python:

[4]:
%time for _ in range(10): myarray2 = myarray**2
CPU times: user 958 μs, sys: 1.09 ms, total: 2.04 ms
Wall time: 1.14 ms

Und schließlich vergleichen wir die Zeit noch mit der Berechnung der quadratischen Funktion aller Werte einer Python-Liste:

[5]:
mylist = list(range(100000))
%time for _ in range(10): mylist2 = [x**2 for x in mylist]
CPU times: user 26 ms, sys: 2.81 ms, total: 28.8 ms
Wall time: 28.4 ms