如何使用Python代码以表格格式打印多个txt文件的输出?
我已尝试通过一次运行,将700多个txt文件的数据集最佳匹配。我想把从所有文件中获得的输出参数转换成表格格式如何使用Python代码以表格格式打印多个txt文件的输出?,python,output-formatting,Python,Output Formatting,我已尝试通过一次运行,将700多个txt文件的数据集最佳匹配。我想把从所有文件中获得的输出参数转换成表格格式 def resid(params, x, ydata): decay = params['decay'].value phase = params['phase'].value omega = params['omega'].value amp = params['amp'].value ampb=params['ampb'].value phaseb
def resid(params, x, ydata):
decay = params['decay'].value
phase = params['phase'].value
omega = params['omega'].value
amp = params['amp'].value
ampb=params['ampb'].value
phaseb=params['phaseb'].value
#omegab = params['omegab'].value
y_model = (amp * np.sin(x*2*np.pi*omega+phase)+ ampb*np.sin(x*4*np.pi*omega+phaseb)) * np.exp(-x*decay)
return y_model - ydata
filelist = glob.glob("C:/Users/USER/Desktop/B3/*.txt")
#print(filelist)
for file in filelist:
data = np.loadtxt(file)
x = data[:,0]
y = data[:,1]
params = lmfit.Parameters()
params.add('phase', 0.0, min=-np.pi, max=np.pi)
params.add('omega', 10, min=7, max=12)
params.add('amp', 7, min=0, max=10.0)
params.add('decay', 0.05, min=0, max=10.0)
params.add('ampb', 3, min=0, max=8.0)
params.add('phaseb', 0.0, min=-np.pi, max=np.pi)
#params.add('omegab', 18, min=16, max=20)
fit = lmfit.minimize(resid, params, args=(x, y), method='differential_evolution')
#print("\n\n# Fit using differential_evolution:")
#print(lmfit.report_fit(fit))
for name, param in fit.params.items():
if name=='phase':
print('phase',' ' , param.value,' ',param.stderr, )
elif name=='amp ':
print('amp', ' ',param.value,' ',param.stderr )
elif name=='omega':
print('omega', ' ',param.value,' ',param.stderr)
elif name=='decay':
print('decay', ' ',param.value,' ',param.stderr)
elif name=='ampb':
print('ampb', ' ',param.value,' ',param.stderr)
else:
print('phaseb',' ',param.value,' ',param.stderr)
print(fit.success)
我希望输出为这种格式
但是我已经分别得到了每个输出的值,如下所示
您可以在内部
for
循环之前创建一个空的dict
,让循环用参数填充dict
,然后在for
循环完成后将它们全部打印在一行上。下面的示例将打印相邻的值,并用制表符分隔,制表符应该足够可读,但“表”可能没有完全对齐。若你们想让它在终端上看起来更好,这里提到了一些解决方案。或者,您可以将以制表符或逗号分隔的值转储到文件中,然后使用Excel等打开该文件
。。。
参数={}
fit.params.items()中的参数作为名称:
如果名称=='阶段':
params['phase']=参数值
params['phase_stderr']=param.stderr
elif名称==“amp”:
参数['amp']=参数值
params['amp_stderr']=param.stderr
elif名称=='omega':
参数['omega']=参数值
params['omega_stderr']=param.stderr
elif名称==“衰减”:
params['decay']=参数值
params['decay_stderr']=param.stderr
elif名称=='ampb':
params['ampb']=param.value
params['ampb_stderr']=param.stderr
其他:
params['phaseb']=参数值
params['phaseb_stderr']=param.stderr
印刷品(
参数['phase'],
参数['amp'],
参数['omega'],
参数['decay'],
参数['ampb'],
参数['phaseb'],
参数['phase_stderr'],
参数['amp_stderr'],
参数['omega_stderr'],
参数['decation\u stderr'],
参数['ampb_stderr'],
参数['phaseb_stderr'],
sep=“\t”
)
您可以在内部for
循环之前创建一个空的dict
,让循环用参数填充dict
,然后在for
循环完成后将它们全部打印在一行上。下面的示例将打印相邻的值,并用制表符分隔,制表符应该足够可读,但“表”可能没有完全对齐。若你们想让它在终端上看起来更好,这里提到了一些解决方案。或者,您可以将以制表符或逗号分隔的值转储到文件中,然后使用Excel等打开该文件
。。。
参数={}
fit.params.items()中的参数作为名称:
如果名称=='阶段':
params['phase']=参数值
params['phase_stderr']=param.stderr
elif名称==“amp”:
参数['amp']=参数值
params['amp_stderr']=param.stderr
elif名称=='omega':
参数['omega']=参数值
params['omega_stderr']=param.stderr
elif名称==“衰减”:
params['decay']=参数值
params['decay_stderr']=param.stderr
elif名称=='ampb':
params['ampb']=param.value
params['ampb_stderr']=param.stderr
其他:
params['phaseb']=参数值
params['phaseb_stderr']=param.stderr
印刷品(
参数['phase'],
参数['amp'],
参数['omega'],
参数['decay'],
参数['ampb'],
参数['phaseb'],
参数['phase_stderr'],
参数['amp_stderr'],
参数['omega_stderr'],
参数['decation\u stderr'],
参数['ampb_stderr'],
参数['phaseb_stderr'],
sep=“\t”
)
非常感谢much@PrakashGyawali不用谢我:)如果你认为答案有用,请把它投上去,如果它解决了你的问题,请把它标记为接受。谢谢多谢各位much@PrakashGyawali不用谢我:)如果你认为答案有用,请把它投上去,如果它解决了你的问题,请把它标记为接受。谢谢