[Numpy-discussion] adding booleans

Nathaniel Smith njs at pobox.com
Fri Jun 7 19:48:07 EDT 2013


On 7 Jun 2013 21:58, <josef.pktd at gmail.com> wrote:
>
> Interesting observation, (while lurking on a pull request)
>
> >>> np.add.reduce(np.arange(5)<3)
> 3
> >>> np.add((np.arange(5)<3), (np.arange(5)<3))
> array([ True,  True,  True, False, False], dtype=bool)
>
>
> I often use summing of an array of boolean but didn't know the second
behavior

...yeah weird. My gut reaction is that it's a bug. Addition on bools should
either be an error, undefined but doable via an implicit upcast to int
(analogous to calling np.sin on an int array triggering an upcast to
float), or xor (i.e., addition mod 2). But apparently we're inconsistent -
add.reduce upcasts, and add.__call__, uh... upcasts and then downcasts,
maybe? It's like if np.sin on an int array returned ints? I can't see how
to get the quoted behaviour in any conceptually coherent way. But maybe I'm
missing something.

-n
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20130608/c5733fc1/attachment.html>


More information about the NumPy-Discussion mailing list