本文共 756 字,大约阅读时间需要 2 分钟。
有没有办法返回任意函数在其他文件中定义的参数个数?我已经尝试在inspect中使用Signature类,如下所示:
from foo import func1, func2, func3
from inspect import signature
from scipy.optimize import curve_fit
func_list = [ func1, func2, func3 ]
n, bins, patches = hist( array )
for f in func_list:
sig = signature(f)
args = sig.parameters['args']
p = np.ones( len(args) )
params = curve_fit( f, bins[1:], n, p0 = p )
print(params[0])
但是,从我看到的情况来看,这并不是我需要的签名,只适用于本地用户定义的函数 .
这里出现问题的地方是我在一个类中有一个测试函数(修改过的高斯函数),它接受一个必需参数(输入数组)和三个拟合参数:
def _pdf( self, x, a, b, c ):
return np.sqrt(a) * ( np.exp(-(b*x)**2 / c ) / np.sqrt(2.0 * np.pi) )
我希望在上面的例子中 len( params[0] ) 的值为3 .
np.ones的初始化是任意的(因为我知道没有说明p0将给出所有参数的数量都在猜测1)但是我将来修改这个数组 . 现在,我只需要能够手动确定p0的长度 .
上下文:我想使用scipy拟合一些曲线参数,但我不知道每个曲线在用户加载之前将具有多少拟合参数 .
有任何想法吗?谢谢
转载地址:http://ytspa.baihongyu.com/