29

だから私はこれらの条件を持っています:

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で「 OR 」条件をどのように行うかです。

4

2 に答える 2

46

&ブール値に対してnumpyがオーバーロードする場合は、それがブール値であるとand安全に想定できます。|or

area1 = N.where(((A>0) & (A<10)) | ((A>40) & (A<60))),1,0)
于 2012-04-30T00:11:00.827 に答える
31

ありますnumpy.logical_or

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

numpylogical_andlogical_orあなたが望むufuncsです(私は思う)

&ではないlogical andことに注意してください。ビット単位 andです。(a> 10)は、2番目の条件と同様に論理配列(たとえば、1と0)を返すため、これは引き続き機能します。したがって、この場合、「論理積」と「ビット単位」は同等です(論理積とビット単位と同じor)。ただし、他の場合では、ビット演算によって驚くべき結果が得られる可能性があります(主に、Python&|演算子の優先順位がこれらのコンテキストで予想されるよりも低いためです)。

于 2012-04-30T00:13:22.990 に答える