Slice 2D-Array in NumPy

Muhammad Maisam Abbas 30 Januar 2023
  1. Slice 2D-Array mit Array-Indizierung in NumPy
  2. Slice 2D Array mit der Funktion numpy.ix_() in NumPy
Slice 2D-Array in NumPy

In diesem Tutorial wird das Slicen eines 2D-Arrays in NumPy vorgestellt.

Slice 2D-Array mit Array-Indizierung in NumPy

Wenn wir ein 2D-NumPy-Hauptarray haben und daraus ein weiteres 2D-Unterarray extrahieren möchten, können wir zu diesem Zweck die Array-Indizierungsmethode verwenden. Nehmen wir für dieses Beispiel ein Array von 4*4-Formen. Es ist ziemlich einfach, das erste und das letzte Element des Arrays zu extrahieren. Zum Beispiel liefert uns array[0:2,0:2] eine Ansicht oder ein Unter-Array, das die ersten beiden Elemente innerhalb des Arrays sowohl vertikal als auch horizontal enthält. In ähnlicher Weise liefert uns array[2:,2:] eine Ansicht oder ein Unter-Array, das die letzten beiden Elemente innerhalb des Arrays sowohl vertikal als auch horizontal enthält. Die komplexere Aufgabe besteht darin, die Elemente aus verschiedenen Zeilen und Spalten abzurufen, indem eine mittlere Zeile oder Spalte übersprungen wird. Das folgende Codebeispiel zeigt uns genau, wie dies mit der Array-Indizierung in Python erreicht wird.

import numpy as np

x = range(16)

x = np.reshape(x, (4, 4))
print(x)

y = x[[[0], [2]], [1, 3]]
print(y)

Ausgabe:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[[ 1  3]
 [ 9 11]]

Im obigen Code haben wir die Elemente in den Zeilen 1 und 3 extrahiert, die sich mit den Spalten 1 und 3 schneiden, während wir Zeile 2 und Spalte 2 mit der Array-Indizierungsmethode in Python übersprungen haben. Dies kann auch mit einem ähnlichen Ansatz erfolgen, jedoch mit einer anderen Syntax, wie im folgenden Codierungsbeispiel gezeigt.

import numpy as np

x = range(16)

x = np.reshape(x, (4, 4))
print(x)

y = x[0::2, 1::2]
print(y)

Ausgabe:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[[ 1  3]
 [ 9 11]]

Im obigen Code haben wir auch die Elemente in Zeile 1 und 3 extrahiert, die sich mit Spalte 1 und 3 schneiden, während Zeile 2 und Spalte 2 mit der Array-Indizierungsmethode in Python übersprungen wurden. Diese Methode ist einfacher als der vorherige Ansatz, da sie nicht zu viele Klammern enthält und insgesamt besser lesbar ist.

Slice 2D Array mit der Funktion numpy.ix_() in NumPy

Die Funktion numpy.ix_() bildet in Python eine offenmaschige Folge von Elementen. Diese Funktion nimmt n 1D-Arrays und gibt ein nD-Array zurück. Wir können diese Funktion verwenden, um einzelne 1D-Schnitte aus unserem Hauptarray zu extrahieren und sie dann zu einem 2D-Array zu kombinieren. Das folgende Codebeispiel erledigt die gleiche Aufgabe wie die vorherigen Beispiele, jedoch unter Verwendung der Funktion numpy.ix_() mit Array-Indizierung in Python.

import numpy as np

x = range(16)

x = np.reshape(x, (4, 4))
print(x)

y = x[np.ix_([0, 2], [1, 3])]
print(y)

Ausgabe:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[[ 1  3]
 [ 9 11]]

Im obigen Code haben wir im Grunde genau dasselbe wie in den vorherigen Beispielen gemacht, aber mit der Funktion np.ix_() zusammen mit der Array-Indizierung in Python.

Die Grundidee hinter all diesen Beispielen ist dieselbe. Als wir unser Hauptarray erstellt haben, wurde ihm je nach Form und Größe ein Puffer zugewiesen. Die Array-Indizierungsmethode erstellt ein neues Objekt vom Datentyp Array, das auf den Speicherpuffer unseres Hauptarrays zeigt. In allen obigen Beispielen ist y zwar ein neues Array, aber es braucht keinen Puffer im Speicher. Es zeigt nur auf bestimmte Stellen im Speicherpuffer des Arrays x. Dies macht die Array-Indizierungsmethode besser als nur das Erstellen eines neuen Arrays.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn