"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 > Como extrair elementos de um array com base em índices de outro array usando indexação de array inteiro?

Como extrair elementos de um array com base em índices de outro array usando indexação de array inteiro?

Publicado em 2024-11-08
Navegar:181

How to Extract Elements from an Array Based on Indices in Another Array Using Integer Array Indexing?

Utilizando indexação de array inteiro para extrair elementos com base em índices de array secundários

No cenário determinado, o objetivo é recuperar elementos específicos de um array A usando índices especificados em um segundo array B. Em vez de confiar em np.take ou np.choose, uma abordagem mais direta é empregar a indexação de array inteiro do NumPy:

A[np.arange(A.shape[0]),B.ravel()]

Veja como esse código atinge o resultado desejado:

  • np.arange(A.shape[0]) cria uma matriz de índices de 0 a (A.shape[0] - 1), representando as linhas de A.
  • B.ravel() nivela B em um array unidimensional, garantindo que ele tenha o mesmo número de elementos como linhas em A.
  • A operação de indexação A[...] recupera elementos de A usando os índices de linha e índices de coluna de B.

Essa abordagem é particularmente útil quando B é uma matriz 1D ou uma lista de índices de colunas. Ao pular a operação de nivelamento, o código se torna ainda mais simples:

A[np.arange(A.shape[0]),B]

Exemplo:

A = np.array([[0, 1], [2, 3], [4, 5]])
B = np.array([1, 0, 1])

result = A[np.arange(A.shape[0]), B]

print(result)
# Output: [1, 2, 5]
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