Вопрос по python, numpy – Несколько условий, используя 'или' в массиве numpy

22

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

A = 0 to 10 OR 40 to 60

B = 20 to 50

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

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

Мой вопрос: как мне это сделать?OR& APOS; состояние в NumPy?

Ваш Ответ

2   ответа
28

& для логическогоand Вы можете смело предположить, что| является логическимor.

area1 = N.where(((A>0) & (A<10)) | ((A>40) & (A<60))),1,0)
Error: User Rate Limit Exceeded&Error: User Rate Limit ExceededTrue/FalseError: User Rate Limit Exceeded1Error: User Rate Limit Exceeded0Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
24

numpy.logical_or

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

NumPylogical_and а такжеlogical_or те уфунки, которые вы хотите (я думаю)

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

Похожие вопросы