[Numpy-discussion] Upgrade to 1.6.x: frompyfunc() ufunc casting issue
Pascal Lamblin
lamblinp at iro.umontreal.ca
Fri Jan 20 16:55:43 EST 2012
Hi everyone,
A long time ago, Aditya Sethi <ady.sethi at gmail... 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'
Here's the workaround I found to that problem:
>>> uadd.accumulate([1,2,3], dtype='object')
array([1, 3, 6], dtype=object)
It seems like "accumulate" infers that 'l' is the required output dtype,
but does not have the appropriate implementation:
>>> uadd.types
['OO->O']
Forcing the output dtype to be 'object' (the only supported dtype) seems
to do the trick.
Hope this helps,
--
Pascal
More information about the NumPy-Discussion
mailing list