提问人:Elijah 提问时间:7/26/2023 最后编辑:Elijah 更新时间:7/26/2023 访问量:37
lmfit 中的位置参数不能是 SciPy CubicSpline 数据类型
Positional arguments in lmfit cannot be SciPy CubicSpline datatype
问:
问题:
如果我插入 lmfit 的位置参数数组是从 获得的。minimize()
scipy.interpolate.CubicSpline
我收到以下错误:
TypeError: unsupported operand type(s) for *: 'CubicSpline' and 'float'
该操作用于我的模型函数中,我将位置参数数组 () 与拟合参数 () 相乘,如下所示。基本上,lmfit 认为 () 是一种类型,即使它是一个浮点数组。*
x
pars['a']
x_list
CubicSpline
我的代码:
import scipy.interpolate as scpi
import numpy as np
from lmfit import Parameters, minimize
A = np.linspace(0,1,100)
B = A**2
y_list = np.linspace(1,100,100)
x_list = scpi.CubicSpline(A, B)
def model(pars, x, data=None):
model = x*pars['a']
if data is None:
return model
return model - data
fit_params = Parameters()
fit_params.add('a', value = 1., min = 0.0, vary=True)
coeff = minimize(model,
fit_params,
args=(x_list(A),),
kws={'data': y_list}, #cut off distance
method='basinhopping',
)
这是我到目前为止尝试过的:
type(x_list)
显示它是一个浮点数数组x_list*0.1
在单元格中工作- 类型转换为浮点数组并不能解决问题:
x_list
x_list = np.asarray([float(j) for j in x_list])
答:
1赞
ev-br
7/26/2023
#1
Your 不是一个列表,而是一个 CubicSpline 对象。x_list
评论
A
B
lmfit
x_list = scpi.CubicSpline(A, B)
x_list
x_list*1.