terça-feira, 14 de abril de 2020

Procurando valores numa array com NumPy

Procurando valores numa array com NumPy


A biblioteca numpy tem uma função chamada where que retorna uma tupla com os index onde a função achou elementos correspondentes à pesquisa. A busca é feita na matriz toda. Por isso se a matriz tiver mais de um numero correspondente à pesquisa o seu index vai estar na matriz.
Exemplo
import numpy as np

array = np.array([0, 1, 2, 0, 3, 4, 5, 0, 6])
a = np.where(array == 0)
print(a)
O resultado desse exemplo são os números zero, três e sete porque existem três elementos que correspondem à pesquisa e eles se encontram na posição zero, três e sete. Lembre-se que o index de uma matriz começa na posição zero.
Nesse exemplo o resultado é uma tupla com uma array indicando os index dos elementos correspondentes da pesquisa e o seu tipo de dado. No caso um inteiro de 32 bytes. Na versão do python 2.7 o resultado será apenas o index dos elementos da pesquisa.
Com a função where é possível localizar a posição de todos os números par da matriz.
Exemplo
import numpy as np

array = np.array([1, 2, 3, 4, 5, 6, 7, 8])
a = np.where(array%2 == 0)
print(a)
Também é possível localizar os números ímpares da matriz com a função where.
Exemplo
import numpy as np

array = np.array([1, 2, 3, 4, 5, 6, 7, 8])
a = np.where(array%2 == 1)
print(a)

Método Searchsorted

Searchsorted é um método que retorna o index onde um elemento deveria ser adicionado para manter uma ordem. Por exemplo, na matriz [1, 2, 5, 6] o elemento quatro deveria ser adicionado em qual index para a matriz continuar ordenada? Essa resposta você pode obter com o método searchsorted.
Exemplo
import numpy as np

array = np.array([1, 2, 5, 6])
a = np.searchsorted(array, 4)
print(a)
O método searchsorted recebe dois argumentos: a matriz onde a busca será feita e o numero que se deseja adicionar na matriz. O resultado desse exemplo é o numero dois. Porque se o numero quatro for adicionado no index dois a matriz continuará ordenada.
A função searchsorted começa a pesquisa do lado direito, do menor para o maior (na maioria dos casos). Para inverter esse comportamento podemos passar o valor do parâmetro side como right (direita). Assim a função começará a pesquisa do fim para o começo da matriz (da direita para a esquerda).
Exemplo
import numpy as np

array = np.array([1, 2, 5, 6, 8, 9])
a = np.searchsorted(array, 7, side='right')
print(a)

Múltiplos valores

A função searchsorted aceita a pesquisa por múltiplos valores. É só passar uma lista com os valores que se deseja pesquisar.
Exemplo
import numpy as np

array = np.array([1, 3, 5])
a = np.searchsorted(array, [2, 4, 6])
print(a)
O resultado da função searchsorted, quando se passa uma lista para pesquisa, é uma lista com os index das posições onde os elementos da pesquisa devem ser adicionados para a matriz continuar ordenada.

0 comentários:

Postar um comentário