[Numpy-discussion] vectorize doesn't like functools.partial

josef.pktd at gmail.com josef.pktd at gmail.com
Wed Sep 8 11:12:37 EDT 2010


On Wed, Sep 8, 2010 at 10:53 AM, Neal Becker <ndbecker2 at gmail.com> wrote:
> josef.pktd at gmail.com wrote:
>
>> On Wed, Sep 8, 2010 at 7:44 AM, Neal Becker <ndbecker2 at gmail.com> wrote:
>>> If I  try to use vectorize on the result of functools.partial, I seem to
>>> get:
>>>
>>> ValueError: failed to determine the number of arguments for
>>> <functools.partial object at 0x4e396d8>
>>>
>>> Anything I can do about it?
>>
>> Set .nin (attribute of vectorized function, I think) directly with
>> number of arguments (int)
>>
>> Josef
>>
>>>
>>> _______________________________________________
>>> NumPy-Discussion mailing list
>>> NumPy-Discussion at scipy.org
>>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>>
> Not sure what you mean.  Here is a demo of 2 problems of interop of numpy
> and functools.partial.  Tried both vectorize and frompyfunc.  vectorize
> gives:
> ValueError: failed to determine the number of arguments for
> <functools.partial object at 0x230b1b0>
>
> frompyfunc gives:
> TypeError: H() got multiple values for keyword argument 'iir'
>
> Note that doc for frompyfunc says:
> "Takes an arbitrary Python function..."
>
> import numpy as np
>
> class iir (object):
>    def H (z):
>        return 1
>
> def H (iir, f):
>    z = complex (cos (2*pi*f/fs), sin (2*pi*f/fs))
>    return iir.H (z)
>
> f = np.linspace (0, 10e6, 1000)
> #bug1
> from functools import partial
> the_iir = iir()
> p = partial (H, iir=the_iir)
> resp_pll = np.vectorize (p)(f)
> #bug2
> resp_pll = np.frompyfunc (p, 1, 1)(f)

looks like a limitation of vectorize (fails in constructor), and nin
cannot be included in the constructor

this should be a bug report or enhancement ticket

a work around, after fixing other problems in your code example:

p = partial(H, iir=the_iir)
fun = np.vectorize(lambda x: p(x))

>>> fun.nin
1
>>> fun(5)
array(1)
>>> fun(f)[:10]
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])

Josef

>
>
> _______________________________________________
> 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