Ответ 1
Если numpy перегружает &
для boolean and
, вы можете с уверенностью предположить, что |
является логическим or
.
area1 = N.where(((A>0) & (A<10)) | ((A>40) & (A<60))),1,0)
Итак, у меня есть следующие условия:
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?
Если numpy перегружает &
для boolean and
, вы можете с уверенностью предположить, что |
является логическим or
.
area1 = N.where(((A>0) & (A<10)) | ((A>40) & (A<60))),1,0)
Там 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 &
и |
имеют более низкий приоритет, чем ожидалось в этих контекстах).