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í.


Otestujte se pomocí cvičení

Cvičení:

Použijte správnou metodu NumPy k nalezení všech položek s hodnotou 4.

arr = np.array([1, 2, 3, 4, 5, 4, 4])

x = np.(arr == 4)