NumPy ist der Eckpfeiler des wissenschaftlichen Rechnens in Python, und seine Leistungsfähigkeit liegt hauptsächlich in seinem N-dimensionalen Array-Objekt, dem ndarray. Die Beherrschung von ndarrays ist essentiell für die effektive Nutzung von NumPy. Dieses Tutorial bietet eine umfassende Einführung in ndarrays, einschließlich ihrer Erstellung, Attribute und grundlegenden Operationen.
Inhaltsverzeichnis
Ndarray Definition
Ein NumPy ndarray (N-dimensionales Array) ist ein homogener, mehrdimensionaler Container, der Elemente des gleichen Typs und der gleichen Größe enthält. Stellen Sie es sich als eine hoch optimierte, ausgefeilte Version einer Python-Liste vor, die in der Lage ist, Daten über mehrere Dimensionen (1D, 2D, 3D und höher) zu verarbeiten. Im Gegensatz zu Python-Listen, die Elemente unterschiedlicher Datentypen enthalten können, erzwingen ndarrays Typhomogenität, was zu erheblichen Leistungssteigerungen führt. Diese Homogenität ermöglicht vektorisierte Operationen – die Anwendung von Operationen auf das gesamte Array gleichzeitig anstatt elementweise, wodurch die Geschwindigkeit drastisch verbessert wird.
Wichtige ndarray-Eigenschaften:
- Homogen: Alle Elemente haben den gleichen Datentyp.
- Mehrdimensional: Stellt Daten in verschiedenen Dimensionen dar (1D-Vektoren, 2D-Matrizen, 3D-Tensoren usw.).
- Feste Größe: Die Größe des Arrays ist bei der Erstellung festgelegt, und eine Größenänderung beinhaltet typischerweise die Erstellung eines neuen Arrays.
- Vektorisierte Operationen: Unterstützt effiziente elementweise und array-ebene Operationen.
- Speichereffizienz: Speichert Daten in zusammenhängenden Speicherblöcken, wodurch die Leistung verbessert wird.
Ndarray Erstellung
Die Erstellung von ndarrays ist mit den Funktionen von NumPy unkompliziert:
import numpy as np
# Aus einer Liste
arr_1d = np.array([1, 2, 3, 4, 5])
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
# Verwendung spezialisierter Funktionen
arr_zeros = np.zeros((2, 3)) # Array mit Nullen
arr_ones = np.ones((3, 2)) # Array mit Einsen
arr_arange = np.arange(10) # Zahlenfolge
arr_linspace = np.linspace(0, 1, 5) # Gleichmäßig verteilte Zahlen
arr_random = np.random.rand(2, 2) # Zufallszahlen
print(arr_1d)
print(arr_2d)
print(arr_zeros)
print(arr_ones)
print(arr_arange)
print(arr_linspace)
print(arr_random)
Ndarray Attribute
Ndarray-Objekte bieten mehrere wichtige Attribute, die Informationen über ihre Form, ihren Datentyp, ihre Größe und mehr liefern. Das Verständnis dieser Attribute ist der Schlüssel zur effektiven Manipulation von ndarrays.
ndim
: Die Anzahl der Array-Dimensionen (Achsen).shape
: Ein Tupel, das die Größe des Arrays entlang jeder Dimension angibt (z. B. (3, 4) für eine 3×4-Matrix).size
: Die Gesamtzahl der Elemente.dtype
: Der Datentyp der Elemente (z. B.int32
,float64
,bool
).itemsize
: Die Größe (in Bytes) jedes Elements.nbytes
: Die Gesamtgröße (in Bytes) des Arrays (itemsize * size
).
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("Anzahl der Dimensionen:", arr.ndim)
print("Form:", arr.shape)
print("Größe:", arr.size)
print("Datentyp:", arr.dtype)
print("Elementgröße:", arr.itemsize)
print("Gesamtbytes:", arr.nbytes)
Grundlegende Ndarray Operationen
NumPy bietet effiziente elementweise und array-ebene Operationen. Einfache arithmetische Operationen (+, -, *, /, //, %, **) sind vektorisiert:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print("Addition:", arr1 + arr2)
print("Subtraktion:", arr1 - arr2)
print("Multiplikation:", arr1 * arr2)
print("Division:", arr1 / arr2)
Auch komplexere Operationen (wie Matrixmultiplikation, Skalarprodukt usw.) sind leicht verfügbar.