擅长:python、mysql、java
<p>我通过为<code>polyfit</code>函数创建全局配置来重写代码。这是<code>if</code>更具python风格的版本。你知道吗</p>
<pre class="lang-py prettyprint-override"><code>polyfits = {
1: {
'f': polyfit1,
'params': ['b0', 'b1'],
'vals' : [ 0, 1],
},
2: {
'f': polyfit2,
'params': ['b0', 'b1', 'b2'],
'vals' : [ 0, 1, 1,],
},
3: {
'f': polyfit3,
'params': ['b0', 'b1', 'b2', 'b3'],
'vals' : [ 0, 1, 1, 1],
},
}
def f(x, y, order=3):
if order not in polyfits.keys():
raise ValueError('Order is out of range, please select from {}.'.format(','.join(map(str, polyfits.keys()))))
_function = polyfits[order]['f']
if _has_lmfit:
fitModel = Model(_function)
params = dict(zip(polyfits[order]['params'], polyfits[order]['vals']))
params = fitModel.make_params(**params)
result = fitModel.fit(y, x=x, params=params)
else:
popt, pcov = curve_fit(_function, x, y)
</code></pre>
<p>我相信您发布了非常简化的代码版本(因为您当前的版本可以比我上面的代码更有效地最小化)。你知道吗</p>