[Numpy-discussion] How to use decorator numpy.vectorize for methods in class
Shailendra
shailendra.vikas at gmail.com
Fri Jul 16 13:00:22 EDT 2010
Hi All,
I tried to use the decorator @numpy.vectorize for the class method
without success. Can any one point me to the correct way of using it?
I am able to use the numpy.vectorize() sucessfully.
Below is the code with did not work
==================== ================
import numpy
class test:
@numpy.vectorize #<========= Using decorator
def add(self,x,y):
return x+y
def operate(self,operation,x,y):
if operation =='add':
return self.add(x,y) #<==============trying to call
def test_test():
test_instance=test()
x=numpy.arange(1,10)
y=numpy.arange(11,20)
print test_instance.operate('add',x,y)
if __name__=='__main__':
test_test()
==================== ================
File "test.py", line 10, in operate
return self.add(x,y)
File "/usr/local/lib/python2.5/site-packages/numpy/lib/function_base.py",
line 1854, in __call__
raise ValueError, "mismatch between python function inputs"\
ValueError: mismatch between python function inputs and received arguments
---------------------------------------------------------------------------------------------------------
But the following modification works
==================== ================
import numpy
class test:
def add(self,x,y):
return x+y
def operate(self,operation,x,y):
if operation =='add':
newfunc=numpy.vectorize(self.add) #<============ Explicitly
vectorizing
return newfunc(x,y) #<============ calling the vectorized func
def test_test():
test_instance=test()
x=numpy.arange(1,10)
y=numpy.arange(11,20)
print test_instance.operate('add',x,y)
if __name__=='__main__':
test_test()
==================== ================
What exactly is happening in case of using decorator?
Thanks,
Shailendra
More information about the NumPy-Discussion
mailing list