"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 > Formas eficientes de encontrar una fila específica en una matriz NumPy: preguntas y soluciones

Formas eficientes de encontrar una fila específica en una matriz NumPy: preguntas y soluciones

Publicado el 2024-11-12
Navegar:969

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

Encontrar instancias de una fila específica en una matriz NumPy de manera eficiente

Al trabajar con matrices NumPy, uno puede encontrar la necesidad de determinar si la array contiene una fila específica, pero el método estándar contains para ndarray plantea preguntas. Este artículo presenta soluciones pitónicas eficientes para este problema.

Un enfoque implica convertir la matriz NumPy en una lista de Python usando .tolist() y realizar comprobaciones de membresía en la lista.

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

Otro método es usar una vista en la matriz y aplicar la función .all(1) para comparar cada fila con la fila de destino por elementos .

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

Además, se puede generar sobre la lista NumPy para un posible aumento del rendimiento. Sin embargo, este enfoque puede ser ineficiente si no se encuentra un resultado temprano.

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

Por último, las funciones lógicas de NumPy proporcionan una forma concisa de realizar comparaciones.

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

Los resultados de referencia indican que las numerosas rutinas mantienen una velocidad de búsqueda constante independientemente de los escenarios de acierto o error. Los enfoques de vista, lógica igual y Python en operadores son comparables en términos de eficiencia, mientras que el generador sobre NumPy no se recomienda para búsquedas de matriz completa.

Declaración de liberación Este artículo se reimprime en: 1729506017 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Ú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