有没有一种方法可以返回任意函数在其他文件中定义的参数数量?我已经尝试在检查中使用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拟合一些曲线参数,但是在用户加载它们之前,我不知道每条曲线将具有多少拟合参数。
有什么想法吗?谢谢