"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 seleccionar de manera eficiente índices de columnas específicos por fila en NumPy?

¿Cómo seleccionar de manera eficiente índices de columnas específicos por fila en NumPy?

Publicado el 2024-11-01
Navegar:674

How to Efficiently Select Specific Column Indexes per Row in NumPy?

NumPy: selección eficiente de índices de columnas específicos por fila

La selección de datos es una operación crucial en el análisis de datos. Cuando se trabaja con matrices NumPy, seleccionar columnas específicas de cada fila puede ser una tarea común. Esta selección se puede lograr con varios métodos, pero seleccionar columnas basadas en una lista de índices por fila requiere un enfoque más eficiente.

Uso de matrices booleanas para selección directa

Si tiene una matriz booleana que indica las columnas que se seleccionarán, puede utilizar la selección directa para extraer los valores deseados de manera eficiente. Se pueden crear matrices booleanas comparando una lista de índices con el rango de columnas. Por ejemplo, dada una matriz X y una lista de índices Y como se describe en la pregunta, puede crear una matriz booleana b de la siguiente manera:

import numpy as np

X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
Y = np.array([1, 0, 2])
b = np.arange(X.shape[1])[np.isin(np.arange(X.shape[1]), Y)]

Con la matriz booleana b se puede realizar la selección directa :

result = X[np.arange(X.shape[0]), b]

Este método proporciona una forma rápida de seleccionar columnas específicas según en la matriz booleana.

Métodos alternativos

Como alternativa, puede utilizar np.arange y la selección directa basada en la lista de índice Y. Este enfoque implica crear una matriz de índices y seleccionando de la matriz X en consecuencia:

result = X[np.arange(X.shape[0]), Y]

Conclusión

La selección de índices de columnas específicas por fila en NumPy se puede realizar de manera eficiente utilizando matrices booleanas. Este método proporciona una selección rápida y sencilla de columnas basada en una lista de índices. Para grandes conjuntos de datos, este enfoque ofrecerá importantes beneficios de rendimiento en comparación con los métodos basados ​​en iteraciones.

Ú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