对于这样的正则函数
def f(t):
return t*t
我可以传递both个值或一个NumPy数组而不会出现问题.E、 g.本工程:
T = 1
print(f(T))
times = np.mgrid[0 : T : 100j]
values = f(times)
现在我创建了一个具有__call__
个函数的类
class rnd_elemental_integrand:
def __init__(self, n_sections, T):
self.n_sections = n_sections
self.T = T
self.generate()
def generate(self):
self.values = norm.rvs(size = (self.n_sections + 1,), scale = 1)
def __call__(self, t):
ind = int(t * (self.n_sections/self.T))
return self.values[ind]
但是对于这个类方法,我可以not传递一个NumPyarray.E、 g.本
T = 5
elem_int_sections = 10
rnd_elem = rnd_elemental_integrand(elem_int_sections, T)
print(rnd_elem(T))
times = np.mgrid[0 : T : 100j]
values = rnd_elem(times)
生成输出
0.43978851468955377
Traceback (most recent call last):
File "/Users/gnthr/Desktop/Programming/Python/StochAna/stochana.py", line 138, in <module>
values = rnd_elem(times)
File "/Users/gnthr/Desktop/Programming/Python/StochAna/stochana.py", line 117, in __call__
ind = int(t * (self.n_sections/self.T))
TypeError: only size-1 arrays can be converted to Python scalars
从其他帖子中,我知道通过np.
函数对__call__
方法进行矢量化是可行的,但例如,上面的函数f
也没有矢量化,可以很好地处理这两种类型的输入.是否可以使该类__call__
方法同时接受两种参数类型(浮点和浮点数组)?