def linearize(p, x):
return p[0] * x**p[1]
def error(p, x, y):
return (np.log10(y) - np.log10(linearize(p, x)))
from scipy import optimize
args = freq_log[1:9063], np.abs(spec_log[1:9063])
qout, success = optimize.leastsq(error,
[1e5,-0.8],
args=args,
maxfev=3000)
fig,ax1=plt.subplots(figsize=(5,5))
spec = ax1.plot(freq_log,np.abs(spec_log), 'o', alpha=0.3)
approx = ax1.plot(freq_log[1:], linearize(qout, freq_log[1:]), linewidth=3)
我正在尝试复制代码,并且试图了解在这种情况下 linearize 做了什么,它需要什么参数,以及 return 做了什么以纠正以下错误
目前它返回运行时错误和 ValueError
RuntimeWarning: divide by zero encountered in power return p[0] * x**p[1]
RuntimeWarning: invalid value encountered in power return p[0] * x**p[1]
ValueError: object too deep for desired array
我主要关心的是前四行,任何人都可以帮助我了解导致此错误的原因以及如何解决它?
完整代码是@https ://github.com/seg/tutorials-2017/blob/master/1710_Colored_inversion/Colored_inversion_notebook.ipynb