"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Maneiras eficientes de encontrar uma linha específica em um array NumPy: perguntas e soluções

Maneiras eficientes de encontrar uma linha específica em um array NumPy: perguntas e soluções

Publicado em 2024-11-12
Navegar:539

Efficient Ways to Find a Specific Row in a NumPy Array: Questions and Solutions

Encontrando instâncias de uma linha específica em um array NumPy de maneira eficiente

Ao trabalhar com arrays NumPy, pode-se encontrar a necessidade de determinar se o array contém uma linha específica, mas o método padrão contains para ndarray levanta questões. Este artigo apresenta soluções eficientes e Pythonic para esse problema.

Uma abordagem envolve converter o array NumPy em uma lista Python usando .tolist() e realizar verificações de associação na lista.

a = np.array([[1,2],[10,20],[100,200]])
[1,2] in a.tolist() # Returns True
[1,20] in a.tolist() # Returns False

Outro método é usar uma visualização no array e aplicar a função .all(1) para comparar cada linha com a linha de destino elemento a elemento .

any((a[:]==[1,2]).all(1)) # Returns True
any((a[:]==[1,20]).all(1)) # Returns False

Além disso, pode-se gerar na lista NumPy para um potencial aumento de desempenho. No entanto, esta abordagem pode ser ineficiente se um resultado não for encontrado antecipadamente.

any(([1,2] == x).all() for x in a) # Stops on first occurrence

Por último, as funções lógicas do NumPy fornecem uma maneira concisa de realizar comparações.

any(np.equal(a,[1,2]).all(1)) # Returns True

Os resultados do benchmark indicam que as rotinas numpy mantêm uma velocidade de pesquisa consistente, independentemente dos cenários de acerto ou erro. As abordagens de visualização, lógica igual e Python em operador são comparáveis ​​em termos de eficiência, enquanto o gerador sobre NumPy não é recomendado para pesquisas de array completo.

Declaração de lançamento Este artigo foi reimpresso em: 1729506017 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3