如何使用lmfit仅打印最小化算法的变量结果值?
如何提取lmfit最小化结果中的变量值并按指定格式打印?
我正在尝试打印lmfit最小化算法中的变量值,目前使用
lmfit.printfuncs.report_fit(res.params),得到的输出为:[[Variables]] a: 123 (init= 123) b: 456 (init= 456) c: 789 (init= 789) d: 012 (init= 012) [[Correlations]] (unreported correlations are < 0.100)请问能否仅打印变量的结果值,格式如下:
123 456 789 012
当然可以啦!其实不用纠结report_fit的输出格式,直接从res.params对象里提取变量值会更灵活,给你两种简单好用的方法:
方法一:批量遍历提取(适合参数较多的情况)
你可以直接循环遍历所有参数,取出每个参数的value属性,再用空格把它们拼接起来打印:print(' '.join(str(param.value) for param in res.params.values()))这样就能直接得到你想要的空格分隔格式啦。这里要注意:如果像
012这种带前导零的数值,要是原始参数定义的是数值类型,它会被自动转为12,所以如果需要保留前导零,得确保参数定义时是字符串类型,或者对数值做格式化处理。方法二:指定参数顺序提取(适合参数数量少且顺序固定的情况)
如果你想严格按照a、b、c、d的顺序打印,直接指定参数名取值就行:print(f"{res.params['a'].value} {res.params['b'].value} {res.params['c'].value} {res.params['d'].value}")这种方式更直观,一眼就能看出来对应哪个参数的值。
内容的提问来源于stack exchange,提问作者ch.Joshi elijah
相关产品推荐
相关产品推荐

