python - 循环合法参数
问题描述
我正在迭代 N 个文件并使用 lmfit 高斯模型拟合所有数据。我想获得一个包含不同文件的所有参数的数组,这样我就可以将它们与另一个变量进行对比。知道该怎么做吗?
这是我的代码:
def gaussian(x,center,sigma,amplitude):
return amplitude*(1/(sigma*(np.sqrt(2*np.pi))))*np.exp(((-(x-center)**2))/(2*(sigma**2)))
for f in os.listdir(directory):
f= os.path.join(directory, f)
data=np.loadtxt(f)
x=data[np.where(data[:,0]<wavemax),0]
y=data[np.where(data[:,0]<wavemax),1]
x=x[0,np.where(x[0]>wavemin)][0]
y=y[0,np.where(x>wavemin)][0]
gauss1 = Model(gaussian,prefix='g1_')
pars=gauss1.make_params()
pars['g1_center'].set(2855.0, True, 2830.0, 2900.0)
pars['g1_sigma'].set(6, True, 1.0, 20.0)
pars['g1_amplitude'].set(0.6, True, 0.01, 30)
gauss2 = Model(gaussian,prefix='g2_')
pars.update(gauss2.make_params())
pars['g2_center'].set(2900.0, True, 2850.0, 2950.0)
pars['g2_sigma'].set(10.0, True, 1.0, 20.0)
pars['g2_amplitude'].set(0.6, True, 0.01, 30)
gauss3 = Model(gaussian,prefix='g3_')
pars.update(gauss3.make_params())
pars['g3_center'].set(2925.0, True, 2850.0, 2950.0)
pars['g3_sigma'].set(10.0, True, 1.0, 50.0)
pars['g3_amplitude'].set(3, True, 0.01, 30)
gauss4 = Model(gaussian,prefix='g4_')
pars.update(gauss4.make_params())
pars['g4_center'].set(2970.0, True, 2850.0, 3000.0)
pars['g4_sigma'].set(14.0, True, 1.0, 20.0)
pars['g4_amplitude'].set(3, True, 0.01, 30)
gauss5= Model(gaussian,prefix='g5_')
pars.update(gauss5.make_params())
pars['g5_center'].set(3050, True, 2750, 3050, None, None)
pars['g5_sigma'].set(100, True, None, None, None, None)
pars['g5_amplitude'].set(5, True, None, None, None, None)
mod=gauss1+gauss2+gauss3+gauss4+gauss5 # fitting the entire curve
init = mod.eval(pars, x=x) #specifying the parameters for the fitting of all the curve
out = mod.fit(y, pars, x=x)
解决方案
在您的循环之前制作一个results
列表,并且对于每个适合,在适合完成后,附加out.params
到该results
列表(可能还有其他有助于标记适合细节的东西)。
然后根据需要使用生成的拟合参数列表。
推荐阅读
- servicenow - 是否可以在 servicenow 付费帐户中创建多个实例?
- azure-devops - Azure Devops api 获取保留的构建
- python-3.x - Python中的持续时间计算器
- reactjs - 比较两个对象列表,一旦匹配,则返回 React JS 中的对象列表
- javascript - 如何在 vuetify 的 v-data-table 中显示带有嵌套 v-data-table 的数组中的 JSON 数组?
- r - 检查是否在不同的列中找到名称以及哪一个
- django - 无法将两个字段相互链接,然后将它们实现到另一个模型
- python - 如何修复“AttributeError:'str'对象没有属性'items'”
- javascript - GLTF 实体动画在 0.9 帧上结束后的入口点。*
- mongodb - 如何编写用于搜索/过滤的 mongoldb 查询