NumPy- Such-Arrays
Durchsuchen von Arrays
Sie können ein Array nach einem bestimmten Wert durchsuchen und die übereinstimmenden Indizes zurückgeben.
Um ein Array zu durchsuchen, verwenden Sie die where()
Methode.
Beispiel
Finden Sie die Indizes, bei denen der Wert 4 ist:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 4, 4])
x =
np.where(arr == 4)
print(x)
Das obige Beispiel gibt ein Tupel zurück:(array([3, 5, 6],)
Das bedeutet, dass bei Index 3, 5 und 6 der Wert 4 vorhanden ist.
Beispiel
Finden Sie die Indizes, bei denen die Werte gerade sind:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x =
np.where(arr%2 == 0)
print(x)
Beispiel
Finden Sie die Indizes, bei denen die Werte ungerade sind:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x =
np.where(arr%2 == 1)
print(x)
Suche sortiert
Es wird eine Methode aufgerufen searchsorted()
, die eine binäre Suche im Array durchführt und den Index zurückgibt, wo der angegebene Wert eingefügt würde, um die Suchreihenfolge beizubehalten.
Es searchsorted()
wird davon ausgegangen, dass die Methode für sortierte Arrays verwendet wird.
Beispiel
Suchen Sie die Indizes, in die der Wert 7 eingefügt werden soll:
import numpy as np
arr = np.array([6,
7, 8, 9])
x =
np.searchsorted(arr, 7)
print(x)
Beispiel erklärt: Die Zahl 7 soll auf Index 1 eingefügt werden, damit die Sortierreihenfolge erhalten bleibt.
Die Methode beginnt die Suche von links und gibt den ersten Index zurück, bei dem die Zahl 7 nicht mehr größer ist als der nächste Wert.
Suche von der rechten Seite
Standardmäßig wird der Index ganz links zurückgegeben, aber wir können side='right'
stattdessen den Index ganz rechts zurückgeben.
Beispiel
Suchen Sie die Indizes, in die der Wert 7 eingefügt werden soll, beginnend von rechts:
import numpy as np
arr = np.array([6,
7, 8, 9])
x =
np.searchsorted(arr, 7, side='right')
print(x)
Beispiel erklärt: Die Zahl 7 soll auf Index 2 eingefügt werden, damit die Sortierreihenfolge erhalten bleibt.
Die Methode beginnt die Suche von rechts und gibt den ersten Index zurück, bei dem die Zahl 7 nicht mehr kleiner als der nächste Wert ist.
Mehrere Werte
Um nach mehr als einem Wert zu suchen, verwenden Sie ein Array mit den angegebenen Werten.
Beispiel
Suchen Sie die Indizes, in die die Werte 2, 4 und 6 eingefügt werden sollen:
import numpy as np
arr = np.array([1,
3, 5, 7])
x =
np.searchsorted(arr, [2, 4, 6])
print(x)
Der Rückgabewert ist ein Array: [1 2 3]
enthält die drei Indizes, wobei 2, 4, 6 in das ursprüngliche Array eingefügt würden, um die Reihenfolge beizubehalten.