[Numpy-discussion] Deprecate boolean math operators?

Nathaniel Smith njs at pobox.com
Fri Dec 6 14:59:36 EST 2013


On Fri, Dec 6, 2013 at 11:55 AM, Alexander Belopolsky <ndarray at mac.com> wrote:
>
>
>
> On Fri, Dec 6, 2013 at 1:46 PM, Alan G Isaac <alan.isaac at gmail.com> wrote:
>>
>> On 12/6/2013 1:35 PM, josef.pktd at gmail.com wrote:
>> > unary versus binary minus
>>
>> Oh right; I consider binary `-` broken for
>> Boolean arrays. (Sorry Alexander; I did not
>> see your entire issue.)
>>
>>
>> > I'd rather write ~ than unary - if that's what it is.
>>
>> I agree.  So I have no objection to elimination
>> of the `-`.
>
>
> It looks like we are close to reaching a consensus on the following points:
>
> 1. * is well-defined on boolean arrays and may be used in preference of & in
> code that is designed to handle 1s and 0s of any dtype in addition to
> booleans.
>
> 2. + is defined consistently with * and the only issue is the absence of
> additive inverse.  This is not a problem as long as presence of - does not
> suggest otherwise.
>
> 3. binary and unary minus should be deprecated because its use in
> expressions where variables can be either boolean or numeric would lead to
> subtle bugs.  For example -x*y would produce different results from -(x*y)
> depending on whether x is boolean or not.  In all situations, ^ is
> preferable to binary - and ~ is preferable to unary -.
>
> 4. changing boolean arithmetics to auto-promotion to int is precluded by a
> significant use-case of boolean matrices.

+1

-- 
Nathaniel J. Smith
Postdoctoral researcher - Informatics - University of Edinburgh
http://vorpus.org



More information about the NumPy-Discussion mailing list