Matrizes de Pesquisa NumPy
Pesquisando Matrizes
Você pode pesquisar um determinado valor em uma matriz e retornar os índices que obtêm uma correspondência.
Para pesquisar uma matriz, use o where()
método.
Exemplo
Encontre os índices onde o valor é 4:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 4, 4])
x =
np.where(arr == 4)
print(x)
O exemplo acima retornará uma tupla: (array([3, 5, 6],)
O que significa que o valor 4 está presente nos índices 3, 5 e 6.
Exemplo
Encontre os índices onde os valores são pares:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x =
np.where(arr%2 == 0)
print(x)
Exemplo
Encontre os índices onde os valores são ímpares:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x =
np.where(arr%2 == 1)
print(x)
Pesquisa classificada
Existe um método chamado searchsorted()
que realiza uma busca binária no array, e retorna o índice onde o valor especificado seria inserido para manter a ordem de busca.
Supõe-se que o searchsorted()
método seja usado em matrizes classificadas.
Exemplo
Encontre os índices onde o valor 7 deve ser inserido:
import numpy as np
arr = np.array([6,
7, 8, 9])
x =
np.searchsorted(arr, 7)
print(x)
Exemplo explicado: O número 7 deve ser inserido no índice 1 para manter a ordem de classificação.
O método inicia a pesquisa pela esquerda e retorna o primeiro índice onde o número 7 não é maior que o próximo valor.
Pesquisar do lado direito
Por padrão, o índice mais à esquerda é retornado, mas podemos side='right'
retornar o índice mais à direita.
Exemplo
Encontre os índices onde deve ser inserido o valor 7, começando pela direita:
import numpy as np
arr = np.array([6,
7, 8, 9])
x =
np.searchsorted(arr, 7, side='right')
print(x)
Exemplo explicado: O número 7 deve ser inserido no índice 2 para manter a ordem de classificação.
O método inicia a pesquisa pela direita e retorna o primeiro índice em que o número 7 não é menor que o próximo valor.
Vários valores
Para pesquisar mais de um valor, use uma matriz com os valores especificados.
Exemplo
Encontre os índices onde os valores 2, 4 e 6 devem ser inseridos:
import numpy as np
arr = np.array([1,
3, 5, 7])
x =
np.searchsorted(arr, [2, 4, 6])
print(x)
O valor de retorno é um array: [1 2 3]
contendo os três índices onde 2, 4, 6 seriam inseridos no array original para manter a ordem.