NumPy ist eine Python-Bibliothek für die Arbeit mit Arrays. Sie hat auch Funktionen für die Arbeit im Bereich der linearen Algebra, Fourier-Transformation und Matrizen.
NumPy wurde im Jahr 2005 von Travis Oliphant entwickelt. Es ist ein Open-Source-Projekt und Sie können es frei verwenden. NumPy steht für Numerisches Python.
Warum NumPy?
In Python haben wir Listen, die den Zweck von Arrays erfüllen, aber sie sind langsam in der Verarbeitung. NumPy zielt darauf ab, ein Array-Objekt bereitzustellen, das bis zu 50-mal schneller ist als herkömmliche Python-Listen. Das Array-Objekt in NumPy heißt ndarray, es bietet eine Menge unterstützender Funktionen, die das Arbeiten mit ndarray sehr einfach machen. Arrays werden sehr häufig in der Datenwissenschaft verwendet, wo Geschwindigkeit und Ressourcen sehr wichtig sind.
Warum ist NumPy schneller als Listen?
NumPy-Arrays werden im Gegensatz zu Listen an einer kontinuierlichen Stelle im Speicher gespeichert, sodass Prozesse sehr effizient auf sie zugreifen und sie manipulieren können. Dieses Verhalten wird in der Informatik als Lokalität der Referenz bezeichnet. Dies ist der Hauptgrund, warum NumPy schneller ist als Listen. Außerdem ist es für die Arbeit mit aktuellen CPU-Architekturen optimiert.
Installation von NumPy
Wenn Python und PIP bereits auf einem System installiert sind, dann ist die Installation von NumPy sehr einfach.
Installiere es mit diesem Befehl:
C:\Users\Dein Name>pip install numpy
Wenn dieser Befehl fehlschlägt, dann benutze eine Python-Distribution, die bereits NumPy installiert hat, wie z.B. Anaconda, Spyder etc.
NumPy importieren
Sobald NumPy installiert ist, importiere es in deine Anwendungen, indem du das Schlüsselwort import hinzufügst:
import numpy
Beispiel:
import numpy
arr = numpy.array([1, 2, 3, 4, 5])
print(arr)
NumPy als np
NumPy wird normalerweise unter dem Alias np importiert.
Lege beim Import einen Alias mit dem Schlüsselwort as an:
import numpy as np
Beispiel:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
Prüfen der NumPy-Version
Die Versionszeichenfolge wird unter dem Attribut __version__
gespeichert.
import numpy as np
print(np.__version__)
NumPy Arrays
NumPy-Arrays sind großartige Alternativen zu Python-Listen. Einige wichtige Vorteile von NumPy-Arrays sind, dass sie schnell und einfach zu bearbeiten sind und dem Benutzer die Möglichkeit geben, Berechnungen über ganze Arrays durchzuführen.
Im folgenden Beispiel müssen Sie zunächst zwei Python-Listen erstellen. Dann importierst du das numpy
-Paket und erstellst numpy
-Arrays aus den neu erstellten Listen.
Dann können wir elementweise Berechnungen über Größe und Gewicht durchführen. Zum Beispiel könnten Sie alle 6 der obigen Beobachtungen von Größe und Gewicht nehmen und den BMI für jede Beobachtung mit einer einzigen Gleichung berechnen. Diese Operationen sind sehr schnell und rechnerisch effizient. Sie sind besonders hilfreich, wenn die Daten 1000e von Beobachtungen enthalten.
# Importiert das numpy-Paket als np
import numpy as np
# Erstellt 2 neue Listen Größe und Gewicht
größe = [1.87, 1.87, 1.82, 1.91, 1.90, 1.85]
gewicht = [81.65, 97.52, 95.25, 92.98, 86.18, 88.45]
# Erstellt 2 numpy-Arrays aus Größe und Gewicht
np_größe = np.array(größe)
np_gewicht = np.array(gewicht)
# Gibt den Typ von np_größe aus
print(type(np_größe))
# Berechnet BMI
bmi = np_gewicht / np_größe ** 2
# das Ergebnis ausgeben
print(bmi)
Unterteilung
Eine weitere großartige Funktion von NumPy-Arrays ist die Möglichkeit der Unterteilung. Wenn du zum Beispiel wissen willst, welche Beobachtungen in unserem BMI-Array über 23 liegen, kannst du das schnell herausfinden.
# Importiert das numpy-Paket als np
import numpy as np
# Erstellt 2 neue Listen Größe und Gewicht
größe = [1.87, 1.87, 1.82, 1.91, 1.90, 1.85]
gewicht = [81.65, 97.52, 95.25, 92.98, 86.18, 88.45]
# Erstellt 2 numpy-Arrays aus Größe und Gewicht
np_größe = np.array(größe)
np_gewicht = np.array(gewicht)
# Gibt den Typ von np_größe aus
print(type(np_größe))
# Berechnet BMI
bmi = np_gewicht / np_größe ** 2
# Gib BMI nur bei bmi > 25 aus
print(bmi[bmi > 25])
Übung
Konvertiere zuerst die Liste der Gewichte von einer Liste in ein NumPy-Array. Anschließend müssen alle Gewichte von Kilogramm in Pfund umgerechnet werden. Verwende dazu die skalare Umrechnung von 2,2 lbs pro Kilogramm. Gib abschließend das resultierende Array mit den Gewichten in Pfund aus.
gewicht_kg = [35, 40, 45, 50, 55, 60, 65]
import numpy as np
# Erzeugen eines Numpy-Arrays np_gewicht_kg aus gewicht_kg
# Erzeuge np_gewicht_lbs aus np_gewicht_kg
# Gib np_weight_lbs aus
gewicht_kg = [35, 40, 45, 50, 55, 60, 65]
import numpy as np
# Erzeugen eines Numpy-Arrays np_gewicht_kg aus gewicht_kg
np_gewicht_kg = np.array(gewicht_kg)
# Erzeuge np_gewicht_lbs aus np_gewicht_kg
np_gewicht_lbs = np_gewicht_kg * 2.2
# Gib np_weight_lbs aus
print(np_gewicht_lbs)
test_output_contains("[ 77. 88. 99. 110. 121. 132. 143.]")
success_msg("Hervorragend!")
NumPy ufuncs
Was sind ufuncs?
ufuncs
steht für "Universal Functions" und es sind NumPy-Funktionen, die auf dem ndarray-Objekt operieren.
Warum ufuncs?
ufuncs
werden verwendet, um die Vektorisierung in NumPy zu implementieren, die viel schneller ist als die Iteration über Elemente. Sie bieten auch Broadcasting und zusätzliche Methoden wie reduce, accumulate usw., die für Berechnungen sehr hilfreich sind.
ufuncs
nehmen auch zusätzliche Argumente entgegen, wie:
-
where
- boolesches Array oder Bedingung, die definiert, wo die Operationen stattfinden sollen. -
dtype
- definiert den Rückgabetyp von Elementen. -
out
- Ausgabe-Array, in das der Rückgabewert kopiert werden soll.
Was ist Vektorisierung?
Die Umwandlung von iterativen Anweisungen in eine vektorbasierte Operation wird Vektorisierung genannt.
Sie ist schneller, da moderne CPUs für solche Operationen optimiert sind.
Addieren der Elemente zweier Listen
liste 1: [1, 2, 3, 4]
liste 2: [4, 5, 6, 7]
Eine Möglichkeit, dies zu tun, ist, über beide Listen zu iterieren und dann jedes Element zu summieren.
Beispiel ohne ufunc
:
x = [1, 2, 3, 4]
y = [4, 5, 6, 7]
z = []
for i, j in zip(x, y):
z.append(i + j)
print(z)
NumPy hat dafür eine ufunc
, genannt add(x, y), die das gleiche Ergebnis liefert.
Mit ufunc
können wir die Funktion add()
verwenden:
import numpy as np
x = [1, 2, 3, 4]
y = [4, 5, 6, 7]
z = np.add(x, y)
print(z)