Frage an python, numpy – Mehrere Bedingungen mit 'oder' im Zahlenfeld

22

Also ich habe diese Bedingungen:

A = 0 bis 10ODER 40 bis 60

B = 20 bis 50

und ich habe diesen Code:

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

Meine Frage ist: Wie mache ich das?ODER'Zustand in numpy?

Deine Antwort

2   die antwort
24

numpy.logical_or

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

taublogical_and undlogical_or sind die Ufuncs, die du willst (glaube ich)

Beachten Sie, dass& ist nichtlogical and, es istbitweise and. Dies funktioniert immer noch für Sie, da (a> 10) ein logisches Array (z. B. Einsen und Nullen) zurückgibt, ebenso wie Ihre zweite Bedingung. In diesem Fall sind "logisch" und "bitweise und" äquivalent (dasselbe gilt für logisch und bitweise)or). In anderen Fällen können die bitweisen Operationen jedoch zu überraschenden Ergebnissen führen (hauptsächlich aufgrund von Pythons& und| Operatoren haben in diesen Kontexten eine niedrigere Priorität als erwartet.

28

Bei numpy Überlastungen& für Booleanand Sie können davon ausgehen, dass| ist booleschor.

<code>area1 = N.where(((A>0) & (A<10)) | ((A>40) & (A<60))),1,0)
</code>
Man darf nicht vergessen, die Ungleichungen wegen ihrer niedrigeren Betriebspriorität in Klammern zu setzen. Roman Shapovalov
ich denke, dass& ist bitweise und ... was (in diesem Fall) irrelevant ist, da (A> 0) ein Array von istTrue/False (d. h.1s und0s) mgilson

Verwandte Fragen