问题:
如果插入lmfit的 * 位置参数 * 数组minimize()
是从scipy.interpolate.CubicSpline
获得的。
我得到以下错误:
TypeError: unsupported operand type(s) for *: 'CubicSpline' and 'float'
字符串*
运算在我的模型函数中使用,我将位置参数数组(x
)与拟合参数(pars['a']
)相乘,如下所示。基本上,lmfit认为(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条答案
按热度按时间uz75evzq1#
x_list
不是一个列表,它是一个CubicSpline对象。