[Numpy-discussion] boolean operations on boolean arrays

Charles R Harris charlesr.harris at gmail.com
Sat Apr 12 11:52:55 EDT 2014


On Sat, Apr 12, 2014 at 8:02 AM, Alan G Isaac <alan.isaac at gmail.com> wrote:

> This is a very basic question.
> Suppose `a` and `b` are boolean arrays with the same shape.
> Are there any considerations besides convenience in choosing
> between:
>
> a&b           a*b         logical_and(a,b)
> a|b           a+b         logical_or(a,b)
> ~a            True-a      logical_not(a)
>
> I somewhat expect the last column to be slowest
> as well as least convenient, since it is built to
> first convert non-booleans to booleans.
> Are there other differences?
> Also, is this made clear anywhere in the docs?
>
>
The Python operators for ndarrays can be dynamically set, but they are
initialized by the ufunc module (don't ask) as follows.

#define BOOL_invert BOOL_logical_not
#define BOOL_negative BOOL_logical_not
#define BOOL_add BOOL_logical_or
#define BOOL_bitwise_and BOOL_logical_and
#define BOOL_bitwise_or BOOL_logical_or
#define BOOL_bitwise_xor BOOL_logical_xor
#define BOOL_multiply BOOL_logical_and
#define BOOL_subtract BOOL_logical_xor

So they are all equivalent to logical_* functions.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20140412/6844cadf/attachment.html>


More information about the NumPy-Discussion mailing list