NumPy Fortgeschrittene Indizierung

Beginner

Einführung

In diesem Lab lernst du über die fortgeschrittene Indizierung in NumPy, eine Technik, die verwendet wird, um zufällige Elemente aus verschiedenen Zeilen und Spalten eines ndarrays auszuwählen, wenn die Elemente, die du auswählen möchtest, keine bestimmte Reihenfolge aufweisen.

Tipps für die VM

Nachdem der Start der VM abgeschlossen ist, klicke in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal musst du einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn du bei der Lernphase Probleme hast, kannst du Labby gerne fragen. Gib nach der Sitzung Feedback, und wir werden das Problem für dich prompt beheben.

Importieren der erforderlichen Bibliotheken und Erstellen des NumPy-Arrays

Zunächst müssen wir die numpy-Bibliothek importieren und ein NumPy-Array erstellen, auf dem wir die fortgeschrittene Indizierung ausführen werden.

import numpy as np

x = np.array([[11, 28], [23, 84], [95, 56]])
print("Das ursprüngliche Array")
print(x)

Im obigen Code haben wir die numpy-Bibliothek importiert und ein NumPy-Array erstellt, das wir für die fortgeschrittene Indizierung verwenden werden.

Ganzzahlige Indizierung

Mit der ganzzahligen Indizierung können wir beliebige Elemente basierend auf dem N-dimensionalen Index auswählen. Jede ganzzahlige Array wird verwendet, um die Anzahl der Indizes in diese Dimension darzustellen.

y = x[[0, 1, 2], [0, 0, 1]]
print("Das Ergebnis nach der ganzzahligen Indizierung")
print(y)

Im obigen Code führen wir eine ganzzahlige Indizierung auf dem NumPy-Array x durch und erstellen ein neues Array y, das die ausgewählten Elemente enthalten wird. Wir wählen ein Element aus der angegebenen Spalte aus jeder Zeile des NumPy-Arrays x aus. Der Zeilenindex enthält alle Zeilennummern, und der Spaltenindex gibt das auszuwählende Element an.

Boolesche Indizierung

Die boolesche Indizierung wird verwendet, wenn wir Elemente aus einem ndarray basierend auf einer Bedingung mit Vergleichsoperatoren oder einem anderen Operator auswählen möchten.

print("Die Elemente, die größer als 11 sind:")
print(x[x > 11])

Im obigen Code führen wir eine boolesche Indizierung auf dem NumPy-Array x durch. Wir geben die Elemente zurück, die aus dem NumPy-Array x größer als 11 sind.

Kombinieren von Fortgeschrittener und Basaler Indizierung

Wir können fortgeschrittene und einfache Indizierung kombinieren, indem wir ein Slice (:) oder ein Auslassungspunkt (...) mit einem Index-Array verwenden.

z = x[1:4, 1:3]
print("Nach der Verwendung einfacher Slicing")
print(z)

y = x[1:4, [1, 2]]
print("Nach dem Slicing mit fortgeschrittener Indizierung für die Spalte")
print(y)

Im obigen Code schneiden wir das NumPy-Array x. Wir verwenden einfaches Slicing und fortgeschrittene Indizierung für die Spalte.

Entfernen von nicht numerischen Werten

Wir können nicht numerische (NaN) Werte mit dem Komplementoperator (~) entfernen.

a = np.array([np.nan, 1, 12, np.nan, 3, 41, 54])
print("Nach dem Ausschließen von NaN ist das Ausgabearray:")
print (a[~np.isnan(a)])

Im obigen Code entfernen wir nicht numerische (NaN) Werte aus dem NumPy-Array a mit dem Komplementoperator (~).

Entfernen von nicht komplexen Zahlen

Wir können nicht komplexe Zahlen aus einem Array mithilfe der iscomplex-Funktion filtern.

a = np.array([1, 2+6j, 5, 3.5+5j])
print("Nach dem Filtern der nicht komplexen Zahlen:")
print (a[np.iscomplex(a)])

Im obigen Code filtern wir nicht komplexe Zahlen aus dem NumPy-Array a mithilfe der iscomplex-Funktion.

Zusammenfassung

In diesem Lab haben Sie verschiedene Arten der fortgeschrittenen Indizierung von ndarray-Elementen in der NumPy-Bibliothek gelernt. Sie haben einige Beispiele für verschiedene Anwendungsfälle der fortgeschrittenen Indizierung in NumPy kennengelernt. Mit dieser Technik können Sie zufällige Elemente aus verschiedenen Zeilen und Spalten eines NumPy-Arrays auswählen.