NumPy Indizierung und Slicing

NumPyNumPyBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab behandeln wir die Konzepte der Indizierung und Slicing in der Numpy-Bibliothek von Python. Wir lernen, wie man auf Elemente eines Arrays zugreift, modifiziert und einen Bereich von Elementen extrahiert. Verschiedene Methoden der Indizierung in der Numpy-Bibliothek werden ebenfalls erklärt und anhand von Beispielen demonstriert.

VM-Tipps

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

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen von Jupyter Notebook nicht automatisiert werden.

Wenn Sie während des Lernens Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Grundlagen verstehen

  • In einem NumPy-Array ist das Slicing im Grunde die Methode, um einen Bereich von Elementen aus einem Array zu extrahieren.
  • Die Elemente im ndarray-Objekt folgen immer einem nullbasierten Index.
  • Um die Inhalte eines ndarray-Objekts in der Numpy-Bibliothek zuzugreifen und zu modifizieren, kann Indizierung oder Slicing genauso durchgeführt werden wie bei den in Python eingebauten Containerobjekten.

Numpy-Array Slicing

  • Das Slicing in einem Array wird auf die gleiche Weise durchgeführt wie bei der Python-Liste.
  • Wenn ein Array 100 Elemente hat und Sie nur einen Abschnitt der Werte auswählen möchten, können Sie Slicing durchführen und die erforderliche Menge an Werten aus dem gesamten ndarray extrahieren.
  • Lernen Sie das Python-Liste-Slicing, und Sie können dasselbe auf Numpy-ndarrays anwenden.

Numpy-Array Indizierung

  • Es gibt drei Arten von Indizierungsmethoden, die in der Numpy-Bibliothek zur Verfügung stehen:
    • Feldzugriff - Dies ist der direkte Feldzugriff über den Index des Werts.
    • Basis-Slicing - Basis-Slicing ist einfach eine Erweiterung des grundlegenden Python-Slicing-Konzepts auf die n Dimensionen.
    • Fortgeschrittene Indizierung (in diesem Lab nicht behandelt)

Beispiele

  • Schauen wir uns einige Beispiele an, um diese Konzepte besser zu verstehen.

Beispiel 1 - Slicing von Ndarray

import numpy as np

a = np.arange(10)
print("Das ndarray ist :")
print(a)

s = slice(2,7,2)
print("Nach Anwendung der slice() - Funktion:")
print (a[s])
  • Der obige Code bereitet ein ndarray-Objekt mit der arange()-Funktion vor.
  • Ein Slice-Objekt wird mit Start-, Stop- und Schrittwerten 2, 7 und 2 definiert.
  • Danach wird dieses Slice-Objekt an das ndarray übergeben. Ein Teil davon, der mit Index 2 beginnt und bis zu 7 mit einem Schrittwert von 2 reicht, wird abgeschnitten.

Beispiel 2 - Slicing eines einzelnen Elements

import numpy as np

a = np.arange(15)
print("Das Array ist :")
print(a)

## Indizierung direkt verwenden
b = a[7]
print("Das achte Element im Array ist :")
print (b)
  • Der obige Code schneidet ein einzelnes Element aus dem ndarray-Objekt ab.
  • Ein einzelnes Array auszuschneiden kann mit der Indizierung sehr einfach erreicht werden.

Beispiel 3

import numpy as np

a = np.arange(20)
print("Das Array ist :")
print(a)

print("Slicing von Elementen ab einem bestimmten Index:")
print(a[2:])
  • Der obige Code schneidet die Elemente ab einem angegebenen Index bis zum letzten Index oder das letzte Element aus.

Beispiel 4

import numpy as np

a = np.arange(20)
print("Das Array ist :")
print(a)

print("Slicing von Elementen zwischen zwei angegebenen Indizes:")
print(a[2:8])
  • Der obige Code schneidet alle Elemente zwischen zwei angegebenen Indizes aus.
  • Der Wert am Endindex wird ausgeschlossen.

Verwendung von Ellipsis

  • Beim Slicing wird das Ellipsis (...) verwendet, um ein Auswahl-Tupel der gleichen Länge wie die Dimension eines Arrays zu erstellen.
  • Für ein mehrdimensionales ndarray, wenn das Ellipsis an der Zeilenposition verwendet wird, wird ein ndarray zurückgegeben, das die Elemente in den Zeilen umfasst, und ähnlich für die Spalten.
import numpy as np
a = np.array([[11,2,23],[33,44,5],[84,25,16]])

print ("Das Array ist :")
print (a )
print ('\n')

## Um das Array der Elemente in der zweiten Spalte zurückzugeben
print ('Die Elemente in der zweiten Spalte sind:')
print (a[..., 1] )
print ('\n')

## Um alle Elemente aus der zweiten Zeile zu slicen
print ('Die Elemente in der zweiten Zeile sind:')
print (a[1,...])
print ('\n')

## Um alle Elemente ab Spalte 1 zu slicen
print ('Die Elemente ab Spalte 1 sind:' )
print (a[..., 1:])

Zusammenfassung

In diesem Lab haben wir das Konzept der Indizierung und des Slicings in der Numpy-Bibliothek behandelt. Wir haben verschiedene Indizierungsmethoden in der Numpy-Bibliothek und verschiedene Methoden des Slicings von Arrays gelernt. Wir haben auch Beispiele gesehen, die die praktische Umsetzung dieser Konzepte demonstrieren.