在numpy数组中使用'或'的多个条件

rud*_*ter 23 python numpy

所以我有这些条件:

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)
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何在numpy中做' OR '条件?

Thi*_*ter 31

如果&布尔值的numpy重载and你可以安全地假设它|是布尔值or.

area1 = N.where(((A>0) & (A<10)) | ((A>40) & (A<60))),1,0)
Run Code Online (Sandbox Code Playgroud)

  • 一个问题是不要忘记将不等式放在括号中,因为它们的操作优先级较低。 (2认同)

mgi*_*son 24

numpy.logical_or

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

numpy logical_andlogical_or你想要的ufuncs(我认为)

请注意,&不是logical and,它是按位的 and.这仍然适用于您,因为(a> 10)返回逻辑数组(例如1和0),第二个条件也是如此.因此,在这种情况下,"逻辑"和"按位和"是等效的(与逻辑和按位相同or).但在其他情况下,按位运算可能会产生令人惊讶的结果(主要是因为python &|运算符在这些上下文中的优先级低于预期).