Python 使ndarrays可调用

Python 使ndarrays可调用,python,numpy,Python,Numpy,假设我有一组正交基函数,表示为Python可调用函数 class Basis(object): def __init__(self,i,j): self.i=i self.j=j def __call__(self,x,y): return f(self.i,self.j,x,y) 我想将它们存储在numpy.array中,这样basis\u函数[I,j]=basis(I,j) 我还希望数组是可调用的,这样basis\u函数(

假设我有一组正交基函数,表示为Python可调用函数

class Basis(object):

    def __init__(self,i,j):
        self.i=i
        self.j=j

    def __call__(self,x,y):
        return f(self.i,self.j,x,y)
我想将它们存储在numpy.array中,这样
basis\u函数[I,j]=basis(I,j)

我还希望数组是可调用的,这样
basis\u函数(x,y)
返回一个数组,该数组包含范围内所有
I,j
basis\u函数[I,j](x,y)

我已经看过了关于子类化ndarray的文档,但没有发现它特别有用。谁能告诉我从哪里开始

附录

我希望能用这种方式

class SytheticFunction(object):
    basis=callable_array([[Basis(i,j) for j in xrange(COLUMNS)]
                          for i in xrange(ROWS)])

    def __init__(self,weights):
        self.weights=weights

    def __call__(self,x,y):
        return (self.weights*SyntheticFunction.basis(x,y)).sum()

是的,你应该先停下来试着用面向对象的思维方式来说服numpy;)。我的印象是,有一行非常优雅的numpy,它会完全满足你的要求。这句话没有什么帮助。当然,这不是非常可行的建议,但它是你将得到的最有帮助的评论。让我的建议更具可操作性;你为什么不描述一下你试图解决的实际问题,这样我们就可以退一步,试着找到最好的解决方案呢?我正在尝试创建程序生成的地图。为此,我想创建一个可调用函数,该函数生成给定经度和纬度的高程,作为实际球面谐波的加权和。最简单的方法是对嵌套的for循环求和,但我觉得应该有更好的方法。事实上,有一种方法比对嵌套的for循环求和更好!对于一个非常具体的解决方案来说,您的描述有点过于笼统,但我将从阅读numpy中的矢量化和广播主题开始。