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

Sebastian Berg sebastian at sipsolutions.net
Fri May 10 16:03:09 EDT 2013


On Fri, 2013-05-10 at 15:35 -0400, Frédéric Bastien wrote:
> I'm trying to do it, but each time I want to test something, it takes
> a long time to rebuild numpy to test it. Is there a way to don't
> recompile everything for each test?
> 
Are you using current master? It defaults to use
ENABLE_SEPARATE_COMPILATION enviroment variable, which, together with
ccache, makes most changes in numpy compile fast for me.

- Sebastian


> thanks
> 
> Fred
> 
> 
> 
> On Fri, May 10, 2013 at 1:34 PM, Charles R Harris
> <charlesr.harris at gmail.com> wrote:
>         
>         
>         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 
>         
>         
>         _______________________________________________
>         NumPy-Discussion mailing list
>         NumPy-Discussion at scipy.org
>         http://mail.scipy.org/mailman/listinfo/numpy-discussion
>         
> 
> 
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion





More information about the NumPy-Discussion mailing list