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.


Teste-se com exercícios

Exercício:

Use o método NumPy correto para encontrar todos os itens com o valor 4.

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

x = np.(arr == 4)