Pytanie w sprawie numpy, python – Wiele warunków przy użyciu „lub” w tablicy numpy

22

Mam więc takie warunki:

A = 0 do 10LUB 40 do 60

B = 20 do 50

i mam ten kod:

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

Moje pytanie brzmi: jak mam to zrobić?LUB„warunek w numpy?

Twoja odpowiedź

2   odpowiedź
24

numpy.logical_or

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

numpylogical_and ilogical_or czy ufunkowie, których chcesz (myślę)

Zauważ, że& nie jestlogical and, to jestbitowo and. To nadal działa dla ciebie, ponieważ (a> 10) zwraca tablicę logiczną (np. 1 i 0), podobnie jak drugi warunek. Zatem w tym przypadku „logiczne i” oraz „bitowe i” są równoważne (takie same jak logiczne i bitowe)or). Ale w innych przypadkach operacje bitowe mogą dawać zaskakujące wyniki (głównie dlatego, że pythonowe& i| operatorzy mają niższy priorytet niż oczekiwano w tych kontekstach).

28

Jeśli numpy przeciąża& dla booleanand możesz spokojnie to założyć| jest logicznaor.

<code>area1 = N.where(((A>0) & (A<10)) | ((A>40) & (A<60))),1,0)
</code>
Myślę, że& jest bitowy i ... który (w tym przypadku) jest nieistotny, ponieważ (A> 0) jest tablicąTrue/False (to znaczy.1s i0s) mgilson
Jedną przeszkodą jest nie zapomnieć umieścić nierówności w nawiasach ze względu na ich niższy priorytet operacji. Roman Shapovalov

Powiązane pytania