问题引入
在对布尔数组进行布尔运算时,and报错,而&正常。后仔细研究了下,发现是没有理清python中的and or与& | 的区别。
In [37]: a=np.arange(-3,3)
Out[37]: array([-3, -2, -1, 0, 1, 2])
In [38]: a>0
Out[38]: array([False, False, False, False, True, True])
In [39]: a<2
Out[39]: array([ True, True, True, True, True, False])
In [40]: a>0 and a<2
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-40-1d57017acc9c> in <module>
----> 1 a>0 and a<2
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
In [41]: (a>0) & (a<2)
Out[41]: array([False, False, False, False, True, False])
and or是逻辑运算符
and,or,not是逻辑(布尔)运算符,对逻辑(布尔)变量进行与或非运算。但注意:当变量为数值变量时,也会按某种规则进行运算。
如下: