ndarray
– ein N-dimensionales Array-Objekt¶
ndarray
erlaubt mathematische Operationen auf ganzen Datenblöcken und verwendet dabei eine ähnliche Syntax wie bei ähnlichen Operationen zwischen skalaren Elementen. In NumPy gibt viele verschiedene Typen zur Beschreibung von Skalaren, die größtenteils auf Typen aus der Sprache C basieren und denjenigen, die mit Python kompatibel sind.
Siehe auch:
Bemerkung:
Wann immer in diesem Tutorial von Array, NumPy-Array oder ndarray
geredet wird, bezieht sich dies in den meisten Fällen auf das ndarray
-Objekt.
[1]:
import numpy as np
[2]:
py_list = [2020, 2021, 20222]
array_1d = np.array(py_list)
[3]:
array_1d
[3]:
array([ 2020, 2021, 20222])
Verschachtelte Sequenzen, wie eine Liste von Listen gleicher Länge, können in ein mehrdimensionales Array umgewandelt werden:
[4]:
list_of_lists = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
array_2d = np.array(list_of_lists)
[5]:
array_2d
[5]:
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
Da list_of_lists
eine Liste mit drei Listen war, hat das NumPy-Array array_2d
zwei Dimensionen, deren Form aus den Daten abgeleitet wird. Mit den Attributen ndim und shape können wir uns die Anzahl der Dimensionen und den Umriss von array_2d
ausgeben lassen:
[6]:
array_2d.ndim
[6]:
2
[7]:
array_2d.shape
[7]:
(3, 4)
Um euch einen Eindruck von der Syntax zu vermitteln, erstelle ich zunächst ein Array aus Zufallszahlen mit fünf Spalten und sieben Slices
(engl.: Scheiben):
[8]:
data = np.random.randn(7, 3)
ndarray
ist ein generischer mehrdimensionaler Container. Jedes Array hat eine Form, ein Tupel, das die Größe der einzelnen Dimensionen angibt. Mit shape
kann ich mir die Anzahl der Zeilen und Spalten eines Arrays ausgeben lassen:
Zusätzlich zu np.array
gibt es eine Reihe weiterer Funktionen zur Erstellung neuer Arrays. zeros und ones erzeugen beispielsweise Arrays aus Nullen bzw. Einsen mit einer bestimmten Länge oder Form. empty erzeugt ein Array, ohne dessen Werte auf einen bestimmten Wert zu
initialisieren. Um ein höherdimensionales Array mit diesen Methoden zu erstellen, übergebt ein Tupel für die Form:
[9]:
np.zeros(4)
[9]:
array([0., 0., 0., 0.])
[10]:
np.ones((3,4))
[10]:
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
[11]:
np.empty((2,3,4))
[11]:
array([[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]]])
Bemerkung:
Ihr dürft nich sicher annehmen, dass die die Funktion np.empty
ein Array mit lauter Nullen zurückgibt, da sie uninitialisierten Speicher zurückgibt und kann daher auch garbage-Werte enthalten kann.
arange ist eine array-bewertete Version der Built-in Python range-Funktion:
[12]:
np.arange(4)
[12]:
array([0, 1, 2, 3])
Weitere NumPy-Standardfunktionen zur Erstellung von Arrays sind:
Funktion |
Beschreibung |
---|---|
|
konvertiert Eingabedaten (Liste, Tupel, Array oder andere Sequenztypen) in ein |
|
konvertiert die Eingabe in ein |
|
wie Python built-in |
|
|
|
wie |
|
erzeugt neue Arrays durch Zuweisung neuen Speichers, füllt sie aber nicht mit Werten wie |
|
erzeugt ein Array der angegebenen |
|
erzeugt eine quadratische N × N-Identitätsmatrix (1en auf der Diagonale und 0en anderswo) |