¿Alguien sabe de una forma (común) más rápida que lineal para encontrar los puntos finales de una propiedad booleana de una matriz.¿Existe una forma más rápida que lineal de encontrar puntos finales de una condición booleana en numpy?
Por ejemplo numpy.nonzero (a) [0] [- 1] es el índice del último elemento no nulo de a (dimensión = 0), y similarmente numpy.nonzero (a) [0] [0] es el índice del primer elemento distinto de cero.
Si sabemos que solo nos importa el primer o el último elemento, podemos usar menos memoria y tener un mejor tiempo de ejecución en común que ejecutar "distinto de cero" como en el ejemplo anterior. Por ejemplo, si nos quedamos con una búsqueda lineal, al menos podemos comenzar por el final apropiado (buscar hacia atrás para encontrar el último valor que coincida con una condición). O podríamos usar una búsqueda binaria (por ejemplo, si el elemento medio coincide con la condición, no es necesario que verifiquemos la primera mitad para encontrar el último elemento donde sea verdadero). Esto parece lo suficientemente común como para que exista una implementación existente pero no he encontrado nada parecido.
La búsqueda binaria no funciona en general. Si el elemento central es "Verdadero", solo tenemos que mirar en la mitad izquierda, eso es cierto. Si el elemento central es 'False', esto no nos dice nada en absoluto. –