Троичный оператор для NumPy ndarray?

#python #arrays #numpy #multidimensional-array

#python #массивы #numpy #многомерный массив

Вопрос:

Есть ли у NumPy троичный оператор? Например, в R есть векторизованная if-else функция:

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

Есть ли что-нибудь эквивалентное в NumPy?

Ответ №1:

Вы ищете numpy.where() :

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

У NumPy даже есть обобщение (которое отображает 0, 1, 2 и т. Д. к значениям, вместо отображения только True и False): numpy.choose() .

Комментарии:

1. Вот и все. Спасибо. Выбор кажется сложным, но я найду ему применение где-нибудь.