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

Neal Becker ndbecker2@gmail....
Wed Sep 8 09:53:20 CDT 2010


josef.pktd@gmail.com wrote:

> On Wed, Sep 8, 2010 at 7:44 AM, Neal Becker <ndbecker2@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@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)




More information about the NumPy-Discussion mailing list