Numpy

Motivation:

Die Dokumentation ist hier zu finden.

Inhalt

Grundlagen

Hier sind einige erste Beispiele zur Nutzung dieser Arrays.

Arrays verhalten sich nicht wie Listen. Mathematischen Operationen werden komponentenweise auf die Elemente des Arrays angewendet.

Fast alle mathematischen Operatoren aus Python funktionieren analog mit NumPy Arrays.

Achtung: Bei besonderen Funktionen (cos, sin, exp, etc.) werden die NumPy Methoden benötigt, z.B. np.cos()!

Bei großen Datensätzen ist die Laufzeit relevant und NumPy ist einige Größenordnungen schneller:

Selbstgeschriebene Funktionen, die nur für eine Zahl geschrieben wurden, funktionieren oft ohne Änderung mit NumPy Arrays.

Das erlaubt es einem unter anderem, sehr leicht physikalische Formeln auf seine Datenpunkte anzuwenden.

Arrays können beliebige Dimension haben:

Das erlaubt es z.B. eine ganze Tabelle von gleichen Datentypen als Array abzuspeichern.

Mit Arrays sind auch Matrixoperationen möglich:

Dimension von Arrays

In NumPy wird die Dimension auch Achse (axis) genannt und mit der ndim-Funktion abgerufen. Die shape-Funktion gibt an wie viele Tupel pro Dimension vorhanden sind. Die Gesamtzahl der Elemente in einem Array können mit der size-Funktion abgefragt werden. Der Datentyp eines Arrays muss innerhalb des Arrays der gleiche sein. Um den Datentyp eines Arrays abzufragen gibt es die dtype-Funktion.

Erstellen von Arrays

Es gibt viele nützliche Funktionen, die bei der Erstellung von Arrays helfen. Zum Verständnis der einzugebenden Argumente ist die NumPy Dokumentation zu empfehlen.

NumPy Indexing

NumPy erlaubt einem sehr bequem bestimmte Elemente aus einem Array auszuwählen und z.B. nur auf diesen Elementen Operationen auszuführen.

Indexing1D

Indexing2D

Ausgewählten Elementen kann man auch direkt einen Wert zuweisen.

Man kann Indexing auch gleichzeitig auf der linken und rechten Seite benutzen.

Transponieren des Arrays kehrt die Reihenfolge der Indizes um.

Masken

Oft will man Elemente auswählen, die eine oder mehrere Bedingungen erfüllen. Hierzu wird eine Maske (Array aus True/False-Werten) mit der gleichen Dimension erstellt. Die Maske kann in eckigen Klammern übergeben werden.

Reduzieren von Arrays

Viele Rechenoperationen reduzieren ein Array auf einen einzelnen Wert.

So z.B. die Summe aller Elemente oder die Multiplikation.

Bei vielen solchen Methoden kann die Dimension mit angegeben werden.

Auch Mittelwert und Standardabweichung der Einträge kann einfach bestimmt werden.

Oft wird im Praktikum aber nach der Unsicherheit des Mittelwerts gesucht.

Dafür braucht man auch den Schätzer der Standardabweichung.

Um die Differenzen zwischen benachbarten Elementen herauszufinden kann die Funktion np.diff() genutzt werden.

Input / Output

Um Datenpunkte aus einer Textdatei einzulesen wird die Funktion np.genfromtxt() genutzt. Sie gibt den Inhalt einer Textdatei als Array zurück.

Die Funktion die Datenpunkte in eine Datei abspeichert ist np.savetxt().

Um den Inhalt der erstellten Datei zu öffnen kann man analog zu Aufgabe 1-python/6-readwrite die open-Funktion benutzen.

Für schönere Formatierung der Daten kann man auch np.column_stack() benutzen.

Am besten sollte aber auch immer erklären werden, was abspeichert wird:

Um die Datentypen beim Speichern zu erhalten, muss das Keyword Argument fmt wie im Folgenden Beispiel angegeben werden.

Das resultierende Array data ist besonders, da es ein sogenanntes structured array ist. Dies ist ein Numpy Array in dem quasi mehrere Arrays in einem abgespeichert sind. Die einzelnen Arrays werden in der Dokumentation fields genannt und haben jeweils einen zugeordneten Namen und einen Datentyp.