2012-05-10 18 views
26

Me preguntaba si había una manera sintácticamente simple de verificar si cada elemento en una matriz numpy se encuentra entre dos números.¿Manera fácil de probar si cada elemento en una matriz numpy se encuentra entre dos valores?

En otras palabras, así como numpy.array([1,2,3,4,5]) < 5 volverá array([True, True, True, True, False]), me preguntaba si era posible hacer algo parecido a esto:

1 < numpy.array([1,2,3,4,5]) < 5

... para obtener ...

array([False, True, True, True, False])

Entiendo que puedo obtener esto a través del encadenamiento lógico de pruebas booleanas, pero estoy trabajando a través de un código bastante complejo y estaba buscando f o una solución sintácticamente limpia.

¿Algún consejo?

Respuesta

37

una solución sería:

a = numpy.array([1,2,3,4,5]) 
(a > 1).all() and (a < 5).all() 

si desea que la matriz acutal de vaues verdad, sólo tiene que utilizar:

(a > 1) & (a < 5) 
+0

Esto sólo devuelve FALSE y no me da un valor booleano para * cada elemento * – blz

+1

pensé que era eso lo que querías, comprueba si cada elemento de una matriz está entre dos números ... bien, estoy gona edit ... – mata

+0

Sin resentimientos =) Esto debe ser lo único No pensé en intentarlo. ¡Muchas gracias! – blz

Cuestiones relacionadas