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 915 µs, sys: 169 µs, total: 1.08 ms
Wall time: 581 µ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 5.89 ms, sys: 5.16 ms, total: 11.1 ms
Wall time: 10.8 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 535 ms, sys: 30.7 ms, total: 565 ms
Wall time: 570 ms