"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo extraer elementos de una matriz basada en índices de otra matriz utilizando la indexación de matrices enteras?

¿Cómo extraer elementos de una matriz basada en índices de otra matriz utilizando la indexación de matrices enteras?

Publicado el 2024-11-08
Navegar:199

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

Utilización de indexación de matrices enteras para extraer elementos basados ​​en índices de matrices secundarias

En el escenario dado, el objetivo es recuperar elementos específicos de un matriz A usando índices especificados en una segunda matriz B. En lugar de confiar en np.take o np.choose, un enfoque más sencillo es emplear la indexación de matriz de enteros de NumPy:

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

Así es como este código logra el resultado deseado:

  • np.arange(A.shape[0]) crea una matriz de índices de 0 a (A.shape[0] - 1), que representan las filas de A.
  • B.ravel() aplana B en una matriz unidimensional, asegurando que tenga la misma cantidad de elementos como filas en A.
  • La operación de indexación A[...] recupera elementos de A utilizando los índices de fila y los índices de columna de B.

Este enfoque es particularmente útil cuando B es una matriz 1D o una lista de índices de columnas. Al omitir la operación de aplanamiento, el código se vuelve aún más simple:

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

Ejemplo:

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]
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3