具有 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)
我完全是 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)