2011-10-21 40 views
14

¿NumPy tiene un operador ternario? Por ejemplo, en I hay un vectorizado if-else función:Operador ternario para NumPy ndarray?

> ifelse(1:10 < 3,"a","b") 
[1] "a" "a" "b" "b" "b" "b" "b" "b" "b" "b" 

¿Hay algo equivalente en NumPy?

Respuesta

19

Usted está buscando numpy.where():

>>> print numpy.where(numpy.arange(10) < 3, 'a', 'b') 
['a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b', 'b'] 

NumPy incluso tiene una generalización (que los mapas de 0, 1, 2, etc., a los valores, en lugar de la cartografía única verdadero y falso): numpy.choose().

+0

Eso es todo. Gracias. Elije parece complicado, pero lo encontraré en alguna parte. – hatmatrix