假设我给你以下布尔数组:
b1 = np.array([ True, True, False, True ])
b2 = np.array([ True, False, False, True ])
b3 = np.array([ True, True, True, False ])
如果您将和
它们放在一起,您会期望得到以下结果:
b4 = np.array([ True, False, False, False ])
对吗?如果不是,请解释。如果我们同意,那么,为什么会发生以下情况?
>>> np.logical_and(b1, b2, b3)
array([ True, False, False, True ])
np.logical_and(np.logical_and(b1, b2),b3)
确实给出了预期的结果。
查看np.logical_and
的留档。与大多数NumPy运算符函数一样,第三个参数是一个out
参数,指定目标数组。它不是操作数!将b3
放在那里只会覆盖b3
的内容。
使用
b4 = b1 & b2 & b3
np的第三个参数。logical_and
是可选的out
参数,它存储操作的结果。
也就是说,调用np.logical_and(b1, b2,b3)
用np.logical_and(b1,b2)
的结果覆盖b3
。
输出参数对于确定输出类型和一般效率很有用。
logical_and()
是一个二元运算符,对于你的问题,你可以使用:
np.all([b1, b2, b3], axis=0)
np.logical_and.reduce([b1, b2, b3], axis=0)