[Numpy-discussion] __array_priority__ don't work for gt, lt, ... operator

Charles R Harris charlesr.harris at gmail.com
Fri May 10 13:34:26 EDT 2013


On Fri, May 10, 2013 at 10:08 AM, Frédéric Bastien <nouiz at nouiz.org> wrote:

> Hi,
>
> it popped again on the Theano mailing list that this don't work:
>
> np.arange(10) <= a_theano_vector.
>
> The reason is that __array_priority__ isn't respected for that class of
> operation.
>
> This page explain the problem and give a work around:
>
>
> http://stackoverflow.com/questions/14619449/how-can-i-override-comparisons-between-numpys-ndarray-and-my-type
>
> The work around is to make a python function that will decide witch
> version of the comparator to call and do the call. Then we tell NumPy to
> use that function instead of its current function with:
> np.set_numeric_ops(...)
>
> But if we do that, when we import theano, we will slow down all normal
> numpy comparison for the user, as when <= is execute, first there will be
> numpy c code executed, that will call the python function to decide witch
> version to do, then if it is 2 numpy ndarray, it will call again numpy c
> code.
>
> That isn't a good solution. We could do the same override in C, but then
> theano work the same when there isn't a c++ compiler. That isn't nice.
>
> What do you think of changing them to check for __array_priority__ before
> doing the comparison?
>

This looks like an oversight and should be fixed.

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


More information about the NumPy-Discussion mailing list