Wissenschaftliche Datenanalyse mit Python NumPy und ScyPy als MatLab-Alternative

Von Thomas Joos

Anbieter zum Thema

NumPy ist eine mathematische Bibliothek für Python, die unter anderem in der Datenanalyse zum Einsatz kommt. Der Vorteil von NumPy liegt vor allem darin, dass Array-Objekte in NumPy ein mehrfaches schneller sind als Python-Listen. Die Arrays kommen vor allem in der Datenwissenschaft vor.

NumPy mit Pip installieren.
NumPy mit Pip installieren.
(Bild: Joos)

NumPy ist eine mathematische Open-Source-Bibliothek für Python, die vor allem für Datenanalyse und Datenwissenschaft zum Einsatz kommt. Die Bibliothek ist in Python, C und C++ geschrieben. Der NumPy-Quellcode ist auf GitHub verfügbar.

Nutzen Entwickler parallel zu NumPy noch SciPy, Matplotlib und Pandas, kann die Umgebung durchaus auch als Ersatz für Matlab zum Einsatz kommen. Vorteil von Python ist der aktuellere Entwicklungsstand. Die Programmiersprache ist moderner als Matlab und kann mit den genannten Modulen eine mächtige Alternative zu Matlab darstellen. Vor allem die zusätzliche Integration von SciPy bietet hier viele Möglichkeiten, die auch Matlab bietet.

Die Bibliothek ist das grundlegende Paket für wissenschaftliche Berechnungen in Python und stellt ein mehrdimensionales Array-Objekt zur Verfügung. Hinzu kommen verschiedene abgeleitete Objekte, zum Beispielwie maskierte Arrays und Matrizen. Auch eine Reihe von Routinen für schnelle Operationen auf Arrays sind Bestandteil von NumPy; hierzu zählen mathematische, logische und formale Manipulatoren, Sortieren, Auswählen, E/A, diskrete Fourier-Transformationen, grundlegende lineare Algebra, grundlegende statistische Operationen, Zufallssimulationen und vieles mehr.

NumPy ist schneller als Listen

Die Array-Objekte in NumPy tragen die Bezeichnung „ndarray“ und bieten mit ihren Funktionen eine höhere Geschwindigkeit als herkömmliche Python-Listen. Der Einsatz in der Datenwissenschaft ist sinnvoll und auch der Schwerpunkt, weil gerade hier sehr große Datenmengen in möglichst kurzer Zeit verarbeitet werden müssen. Python ermöglicht auch ohne die zusätzliche Bibliothek das Verarbeiten von Daten. Aber NumPy erweitert die Möglichkeit auf die Analyse extrem großer Datenmengen bei gleichzeitig maximaler Leistung.

Der Hauptgrund, warum in der Datenanalyse und Datenwissenschaft mit Python auf NumPy gesetzt wird, ist wie erwähnt die sehr viel höhere Geschwindigkeit der NumPy-Arrays. Diese werden immer an der gleichen Stelle im Speicher abgelegt, sodass der Zugriff auf diese Arrays durch verschiedene Prozesse in maximaler Geschwindigkeit stattfinden kann. Dazu kommt, dass die Bibliothek ständig für die Vorteile und Möglichkeiten der aktuellen Prozessoren optimiert wird.

NumPy in Python integrieren und installieren

NumPy mit Pip installieren.
NumPy mit Pip installieren.
(Bild: Joos)

Der einfachste Weg, um NumPy auf einem Rechner zu verwenden, ist die Installation mit dem Python-Paketmanager pip. Aus diesem Grund ist es sinnvoll, auf dem jeweiligen Rechner auch die aktuelle Python-Version zu installieren:

pip install numpy

Um NumPy in eigenen Anwendungen zu nutzen, kommt das Schlüsselwort „import“ zum Einsatz:

Import numpy

Der generelle Umgang mit der Bibliothek und Anleitungen für den Einstieg finden sich in der offiziellen NumPy-Dokumentation. Diese lässt sich auch als PDF herunterladen und steht dann offline zur Verfügung. Ein Beispiel für den Einsatz sieht folgendermaßen aus:

import numpy as np
arr = numpy.array([1, 2, 3, 4, 5])
print(arr)

Die Integration von NumPy erfolgt mit dem Schlüsselwort „np“. Das macht die Verwendung im eigenen Code einfacher. Für den Einsatz ist die Versionsnummer wichtig. Diese lässt sich nach dem Importieren mit dem folgenden Code anzeigen:

print(np.__version__)

Numpy-Arrays als ndarray-Objekt erstellen

Sobald Numpy verfügbar und importiert ist, ist es sinnvoll, Arrays mit NumPy als ndarray-Objekt zu erstellen, zum Beispiel mit:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
print(type(arr))

Erstellen eines ndarray-Objektes mit NumPy.
Erstellen eines ndarray-Objektes mit NumPy.
(Bild: Joos)

Mit NumPy lassen sich Arrays auch verschachteln. Dadurch lassen sich also Arrays als Elemente in einem Array integrieren. Durch diese Dimensionen lassen sich auch komplexere Analysen durchführen. Mit dem Attribut „ndim“ lässt sich in NumPy überprüfen, wie viele Dimensionen ein Array hat. Beispiel:

import numpy as npa = np.array(42)
b = np.array([1, 2, 3, 4, 5])
c = np.array([[1, 2, 3], [4, 5, 6]])
d = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])
print(a.ndim)
print(b.ndim)
print(c.ndim)
print(d.ndim)

Arbeiten mit mehreren Dimensionen in NumPy.
Arbeiten mit mehreren Dimensionen in NumPy.
(Bild: Joos)

Grundsätzlich kann ein Array in NumPy eine nahezu unbegrenzte Anzahl an Dimensionen nutzen. Es ist möglich, bereits beim Erstellen eines Arrays festzulegen, wieviele Dimensionen dieses Array haben soll. Dazu kommt das Argument „ndmin“ zum Einsatz.

import numpy as nparr = np.array([1, 2, 3, 4], ndmin=5)
print(arr)
print('number of dimensions :', arr.ndim)

NumPy mit SciPy verwenden

Wenn es um die Datenanalyse mit Python geht, nutzen viele Entwickler NumPy parallel mit SciPy. Auch hier handelt es sich um eine zusätzliche Bibliothek, die parallel für die Datenanalyse zum Einsatz kommen kann. SciPy erweitert NumPy um Funktionen wie zum Beispiel Minimierung, Regression oder Fouriertransformation. Es empfiehlt sich, zuerst NumPy zu installieren, da dies in Python eine Voraussetzung für die Verwendung ist. Die Installation von SciPy kann ebenfalls über pip erfolgen:

pip install scipy

Die weiteren Schritte zur Verwendung von SciPy mit Python sind in der SciPy-Dokumentation zu finden.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

(ID:48659278)