Подтвердить что ты не робот

Множественные условия, использующие 'или' в массиве numpy

Итак, у меня есть следующие условия:

A = от 0 до 10 ИЛИ 40-60

B = от 20 до 50

и у меня есть этот код:

area1 = N.where((A>0) & (A<10)),1,0)
area2 = N.where((B>20) & (B<50)),1,0)

Мой вопрос: как мне сделать условие < ИЛИ "в numpy?

4b9b3361

Ответ 1

Если numpy перегружает & для boolean and, вы можете с уверенностью предположить, что | является логическим or.

area1 = N.where(((A>0) & (A<10)) | ((A>40) & (A<60))),1,0)

Ответ 2

Там numpy.logical_or

http://docs.scipy.org/doc/numpy/reference/generated/numpy.logical_or.html

numpy logical_and и logical_or - это ufuncs, которые вы хотите (я думаю)

Обратите внимание, что & не logical and, оно побитовое and. Это все еще работает для вас, потому что (a > 10) возвращает логический массив (например, 1 и 0), как и ваше второе условие. Таким образом, в этом случае "логические" и "побитовые и" эквивалентны (то же самое с логическим и побитовым or). Но в других случаях побитовые операции могут приводить к неожиданным результатам (главным образом потому, что операторы python & и | имеют более низкий приоритет, чем ожидалось в этих контекстах).