Numerisches Programmieren mit Python

Definition von numerischer Programmierung

Als Titel dieses Tutorials haben wir den Begriff "Numerisches Python" gewählt. Damit wollten wir bewusst auf den Begriff "Numerisches Programmieren" anspielen. Der Ausdruck "numerisches Programmieren" - auch bekannt unter dem Begriff "wissenschaftliches Programmiern" - ist irreführend. Man könnte es als eine Programmierung ansehen, die mit Zahlen statt mit z.B. Texten zu tun hat. Letztendlich haben die meisten Programme, auch wenn sie scheinbar nichts mit Zahlen zu tun haben, einen numerischen Kern. Denkt man beispielsweise an den Google-Algorithmus und an die Art wie er einem Vorschläge zu Webseiten auf eine Suchanfrage offeriert, dann könnte man glauben, dass es sich bei dem zugrundeliegenden Algorithmus um reine Textverarbeitung handelt. Dennoch ist auch in diesem Fall der Kern bzw. der wesentliche Teil des Algorithmus ein numerisches Problem. Um seinen PageRanking-Algorithmus, d.h. die Bewertung der Webseiten, durchzuführen, lässt Google die größte jemals von Menschen erdachte Matrix berechnen.

So könnte man denken, dass es sich letztendlich bei jedem Programm um numerische Programmierung handelt, aber es gibt auch eine engere Definition.

Unter numerischer Programmierung versteht man das Gebiet der Informatik und der Mathematik, in dem es um Approximationsalgorithmen geht, d.h. die numerische Approximation von mathematischen Problemen oder numerischen Analysis. In anderen Worten Probleme mit stetigen Variablen.

Python gehört zu den wichtigsten und häufigst benutzten Programmiersprachen in diesem Gebiet. Allerdings würde Python keine Rolle spielen, wenn es nicht mächtige Module zur numerischen Programmierung zur Verfügung stellte, die wir im Folgenden beschreiben werden.

Zusammenhang zwischen Python, Numpy, Matplotlib, Scipy und Pandas

Formeln mit Tintenklecksen

Python ist eine universelle Programmiersprache, die sich in den unterschiedlichsten Gebieten einsetzen lässt. So zum Beispiel in der Systemadministration, als Tool zur Erzeugung und zum Betrieb von dynamischen Webseiten und in der Computerlinguistik. Da Python ein universelle Programmiersprache ist, lässt sie sich natürlich auch zum Lösen numerischer Probleme einsetzen. So weit so gut, aber die Crux bei der Sache liegt in der Laufzeit und auch im Speicherverbrauch. Reines Python - also ohne den Einsatz irgendwelcher numerischer Spezialmodule - würde sich nicht eignen für Aufgaben, für die Matlabl und R geschaffen worden sind. Sobald es um die Lösung numerischer Probleme geht, ist die Leistungsfähigkeit von Algorithmen von höchster Wichtigkeit, sowohl was die Geschwindigkeit als auch den Speicherverbrauch betrifft.



Nutzen wir Python in Kombination mit seinen Modulen NumPy, SciPy, Matplotlib und Pandas, dann gehört die Sprache zu den führenden numerischen Programmiersprachen. Sie ist so effizient, wenn nicht gar effizienter, als Matlab und R.


Überblicksdiagramm: Vergleich zwischen Python, NumPy, SciPy, Matplotlib und Pandas

NumPy ist ein Modul, welches die grundlegenden Datenstrukturen zur Verfügung stellt, die auch von Matplotlib, Scipy und Pandas benutzt werden. NumPy implementiert mehrdimensionale Arrays und Matrizen. Außerdem gibt es den Nutzerinnen und Nutzern auch die wesentlichen Funktionalitäten an die Hand, mit denen sich diese Datenstrukturen erzeugen und manipulieren lassen.

SciPy baut auf NumPy auf, d.h. es benutzt die Datenstrukturen, die NumPy bereitstellt. Es erweitert die Leistungsfähigkeit von NumPy mit weiteren nützlichen Funktionalitäten, wie beispielsweise Minimierung, Regression, Fourier-Transformation und viele andere.



Die von Pythonprogrammen, - mit oder ohne Verwendung von NumPy und SciPy, - erzeugten Daten möchste man häufig gerne grafisch darstellen. Für diesen Zweck wurde das Modul Matplotlib geschaffen.



Das jüngste Kind in dieser Modulfamilie ist Pandas. Pandas benutzt alle bisher genannten Module und ist auf diesen aufgebaut. Der Fokus von Pandas besteht darin, Datenstrukturen und Operationen zur Manipulation von Tabellen und Zeitreihen bereitzustellen. Der Name ist von "panel data" abgeleitet. Pandas ist bestens geeignet mit Tabellendaten zu arbeiten, wie sie beispielsweise von Excel erzeugt werden.

Python, eine Alternative zu Matlab

Python entwickelt sich mehr und mehr zur Hauptprogrammiersprache von Date-Scientists. Dennoch plagt viele Wissenschaftler und Ingenieure die Frage, welche Sprache sie nutzen sollten um ihre Probleme zu lösen. Die Hauptkonkurrenten im Gebiet des Maschinellen Lernens sind sicherlich Python, R und MATLAB.

Bei der Entwicklung von R hatte man Statistiker und Data-Scientists im Visier, wollte aber keinesfalls eine Sprache entwickeln, die sich generell einsetzen lässt. Dies gilt ebenso für MATLAB. Python hingegen wurde von Anfang an als universelle Programmiersprache ausgerichtet. Zusätzliche eignet sich Python in Kombination mit den Modulen Numpy, Scipy, Matplotlib und Pandas bestens um R oder MATLAB zu ersetzen.

Einer der wesentlichen Nachteile von MATLAB gegenüber Python sind wohl die Kosten. Python mit all seinen Modulen ist kostenlos, wohingegen MATLAB recht teuer ist und je nach eingesetzter Toolbox extrem teuer sein kann. Bei Python handelt es sich aber nicht nur um kostenlose sondern auch um "freie" Software, d.h. ihr Einsatz ist nicht durch prohibitive Lizenzmodelle eingeschränkt.

Equivalence between Python, Numpy, Scipy, Matplotlib and Matlab