Hi Stefan,

The problem arises when you try to use methods of the ufunc.
So for the custom universal function previously defined, uadd:
uadd([1,2,3],[1,2,3]) works fine.

But uadd.accumulate(..) or uadd.reduce(..) fail with error:
 ValueError: could not find a matching type for add (vectorized).accumulate ( or (vectorized).reduce )

Apologies, I should have been more clear before.

Thanks,
Aditya

2011/9/19 Stéfan van der Walt <stefan@sun.ac.za>
Hi,

On Mon, Sep 19, 2011 at 2:38 PM, Aditya Sethi <ady.sethi@gmail.com> wrote:
> I am facing an issue upgrading numpy from 1.5.1 to 1.6.1.
> In numPy 1.6, the casting behaviour for ufunc has changed and has become
> stricter.
> Can someone advise how to implement the below simple example which worked in
> 1.5.1 but fails in 1.6.1?
>>>> import numpy as np
>>>> def add(a,b):
> ...    return (a+b)
>>>> uadd = np.frompyfunc(add,2,1)
>>>> uadd
> <ufunc 'add (vectorized)'>
>>>> uadd.accumulate([1,2,3])
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> ValueError: could not find a matching type for add (vectorized).accumulate,
> requested type has type code 'l'

Seems to work ok on the latest version:

In [12]: uadd([1,2,3],[1,2,3])
Out[12]: array([2, 4, 6], dtype=object)

In [13]: np.__version__
Out[13]: '2.0.0.dev-af22fc4'

Cheers
Stéfan
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion