NumPy vyhledávací pole
Vyhledávací pole
V poli můžete vyhledat určitou hodnotu a vrátit indexy, které získají shodu.
Chcete-li prohledat pole, použijte where()
metodu.
Příklad
Najděte indexy, kde je hodnota 4:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 4, 4])
x =
np.where(arr == 4)
print(x)
Výše uvedený příklad vrátí n-tici:(array([3, 5, 6],)
Což znamená, že hodnota 4 je přítomna na indexu 3, 5 a 6.
Příklad
Najděte indexy, kde jsou hodnoty sudé:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x =
np.where(arr%2 == 0)
print(x)
Příklad
Najděte indexy, kde jsou hodnoty liché:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x =
np.where(arr%2 == 1)
print(x)
Hledat Seřazeno
Existuje volaná metoda searchsorted()
, která provádí binární vyhledávání v poli a vrací index, kam by byla vložena zadaná hodnota, aby se zachovalo pořadí vyhledávání.
Předpokládá searchsorted()
se, že metoda bude použita na seřazená pole.
Příklad
Najděte indexy, kam má být vložena hodnota 7:
import numpy as np
arr = np.array([6,
7, 8, 9])
x =
np.searchsorted(arr, 7)
print(x)
Vysvětlený příklad: Číslo 7 by mělo být vloženo na index 1, aby zůstalo pořadí řazení.
Metoda spustí vyhledávání zleva a vrátí první index, kde číslo 7 již není větší než další hodnota.
Vyhledávání z pravé strany
Ve výchozím nastavení je vrácen index nejvíce vlevo, ale místo toho můžeme side='right'
vrátit index nejvíce vpravo.
Příklad
Najděte indexy, kam má být vložena hodnota 7, počínaje zprava:
import numpy as np
arr = np.array([6,
7, 8, 9])
x =
np.searchsorted(arr, 7, side='right')
print(x)
Vysvětlený příklad: Číslo 7 by se mělo vložit na index 2, aby zůstalo pořadí řazení.
Metoda spustí vyhledávání zprava a vrátí první index, kde číslo 7 již není menší než další hodnota.
Více hodnot
Chcete-li vyhledat více než jednu hodnotu, použijte pole se zadanými hodnotami.
Příklad
Najděte indexy, kam mají být vloženy hodnoty 2, 4 a 6:
import numpy as np
arr = np.array([1,
3, 5, 7])
x =
np.searchsorted(arr, [2, 4, 6])
print(x)
Vrácená hodnota je pole: [1 2 3]
obsahující tři indexy, kde by se do původního pole vložily 2, 4, 6, aby se zachovalo pořadí.