[英]How to print output of multiple txt file in tabular format with Python code?
我試圖通過單次運行使我的數據集最好地適應 700 多個 txt 文件。 我想從所有文件中獲取的 output 參數轉換為表格格式。我已經嘗試過這種方式
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)
我希望這種格式的 output 在此處輸入圖像描述
但我已經分別獲得了每個 output 的值enter image description here
您可以在內部for
循環之前創建一個空dict
,讓循環用參數填充該dict
,然后在for
循環完成后將它們全部打印在 1 行上。 下面的示例將打印彼此相鄰的值,並用 TAB 字符分隔,這應該足夠可讀,但“表格”可能不會完全對齊。 如果你想讓它在終端中看起來更好, 這里有一些解決方案。 或者,您可以將制表符或逗號分隔的值轉儲到文件中,然后打開該文件,例如使用 Excel。
...
params = {}
for name, param in fit.params.items():
if name == 'phase':
params['phase'] = param.value
params['phase_stderr'] = param.stderr
elif name == 'amp':
params['amp'] = param.value
params['amp_stderr'] = param.stderr
elif name == 'omega':
params['omega'] = param.value
params['omega_stderr'] = param.stderr
elif name == 'decay':
params['decay'] = param.value
params['decay_stderr'] = param.stderr
elif name == 'ampb':
params['ampb'] = param.value
params['ampb_stderr'] = param.stderr
else:
params['phaseb'] = param.value
params['phaseb_stderr'] = param.stderr
print(
params['phase'],
params['amp'],
params['omega'],
params['decay'],
params['ampb'],
params['phaseb'],
params['phase_stderr'],
params['amp_stderr'],
params['omega_stderr'],
params['decay_stderr'],
params['ampb_stderr'],
params['phaseb_stderr'],
sep="\t"
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.