具有 numpy 字段的函数对象在函数调用时不计算值

Function object with numpy fields doesn't compute value when upon function call

我完全是 Python 的新手,我在以下方面使用 numpy 有困难。

我的目标是创建一个函数对象来计算 f(input) - g(input) 我有以下 class:

class MyFunc:
    def __init__(self, f: callable, g: callable):
        self.f: callable = f
        self.g: callable = g

    def f(self, x: float):
        fresult: float = self.f(x)
        gresult: float = self.g(x)
        result: float = fresult - gresult
        # return self.f(x) - self.g(x)
        return result

我正在将 numpy 函数传递给此 class 的对象。像这样:

import numpy as np
f1 = np.poly1d([0.1381, 0.01081, 0.09903, - 0.9153, - 0.4032])
f2 = np.poly1d([-0.6902, - 0.1294, - 0.1718, - 1.07, 0.1351])

foo = MyFunc(f1, f2)

问题是当我将输入传递给 foo.f 时,它只计算 f1(input) 而不是 f1(input) - f2(input)

我做错了什么?

这个应该怎么写才正确?

这是一个获得意外输出的例子:

f1 = np.poly1d([0.1381, 0.01081, 0.09903, - 0.9153, - 0.4032])
f2 = np.poly1d([-0.6902, - 0.1294, - 0.1718, - 1.07, 0.1351])

foo = MyFunc(f1, f2)
value: float = -0.41757
r1 = f1(value) # -0.000319....
r2 = f2(value) # 0.54038....
# I expect fresult = result
result = r1 - r2 # -0.5407....
fresult = foo.f(value) # -0.000319....

将您的 class 定义为:

class MyFunc:
    def __init__(self, f: callable, g: callable):
        self.f: callable = f
        self.g: callable = g

    def fn(self, x: float):
        fresult: float = self.f(x)
        gresult: float = self.g(x)
        result: float = fresult - gresult
        return result

请注意,我将您的 f 函数更改为 fn,以便 将它作为一个单独的对象保存,因为您已经 f 作为属性之一,在构造函数中设置。

然后将其命名为:

fresult = foo.fn(value)

(函数名称已更改)。

但也许没有任何自定义 class 更简单的方法是计算:

foo = np.polysub(f1, f2)
result = foo(value)

或更短:

result = np.polysub(f1, f2)(value)