Hi,

What is the current idiom for vectorizing instance methods? I don't
need vectorization over self. For functions:

from numpy import *

@vectorize
def f(x):
    if x>0:
        return 1
    else:
        return 2

print f(array([-1,0,1]))

does the right thing. But for instance methods:
class useless:
    def __init__(self,v):
        self.v = v

    @vectorize
    def f(self, x):
        if x>self.v:
            return 1
        else:
            return 0

u = useless(0)
print u.f(array([-1,0,1]))

raises an exception:
ValueError: mismatch between python function inputs and received arguments

frompyfunc is possibly more powerful (though it doesn't seem to serve
the purpose either) but the fact that it always returns object arrays
is thoroughly unappealing.

I can create an inner function and vectorize it on every call to f,
but that's not especially efficient or syntactically appealing.

Surely there must be a right way to do this?

Thanks,
Anne M. Archibald
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to