On 7 Jun 2013 21:58, <[email protected]> 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
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to