You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于lmfit的最小化拟合:多参数设置触发TypeError问题排查

问题排查与修复方案

嘿,我一眼就发现你遇到的TypeError问题根源了——lmfit.minimize要求args参数传入一个可迭代对象(比如元组),但你传的是单个numpy浮点数。

错误具体位置

看你第二段代码里的这一行:

result = minimize(objective, params=params, args=( data[d]))

这里的(data[d])只是单个数值,Python不会把它识别为元组。而minimize内部会用*操作符对args进行解包,单个浮点数没法被解包,所以直接抛出了错误。

简单修复方式

只需要在data[d]后面加个逗号,把它变成单元素元组就行:

result = minimize(objective, params=params, args=(data[d],))

额外优化建议

另外,你的目标函数返回的是单个数值data - m,虽然lmfit勉强能处理,但它的设计预期是返回残差数组。更规范的写法是把结果包装成长度为1的数组,比如:

def objective(params, data):
    x = params['x']
    amp = params['amp']
    cen = params['cen']
    wid = params['wid']
    m = gaussian(x, amp, cen, wid)
    return np.array([data - m])  # 转为数组形式

这样能更贴合库的使用规范,避免后续可能出现的奇怪问题。

内容的提问来源于stack exchange,提问作者Muhammad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:57:06