Python曲线拟合.变量间条件优化put函数模型
我有这样一个函数: 我使用曲线拟合来拟合我的数据。。。。编写了以下代码:Python曲线拟合.变量间条件优化put函数模型,python,curve-fitting,scipy-optimize,Python,Curve Fitting,Scipy Optimize,我有这样一个函数: 我使用曲线拟合来拟合我的数据。。。。编写了以下代码: import numpy as np import matplotlib.pyplot as plt from scipy.optimize import curve_fit db = pd.read_excel("/Users/piero/Desktop/lavori/AIF/test.xlsx") M0=np.array(db['M0']) t_time=np.array(db['time']) def
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
db = pd.read_excel("/Users/piero/Desktop/lavori/AIF/test.xlsx")
M0=np.array(db['M0'])
t_time=np.array(db['time'])
def func(t, K, t0, a, b):
if t > t0 :
f = K * ((t-t0)**a) * np.exp(-(t-t0)/b)
return f
return 0
params_guess=[2,3,4,1]
popt,pcov= curve_fit(func,t_time,M0,p0=params_guess)
我发现了这个错误
ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()
所以我知道在我的函数func中,我不能比较一个数组和一个数字,但我需要把t>t0条件放在我的fit中。有人知道怎么做吗?您想评估您在数组
t
的每个元素中写入的条件。使用整个数组调用该函数,称为t
,该数组可能跨越点t0
。在Numpy中,可以通过多种方式执行此类条件求值,但最简单的是:
定义函数(t,K,t0,a,b):
返回np.where(t>t0,K*(t-t0)**a*np.exp(-(t-t0)/b),0.0)
这应该理解为:“在条件t>t0为真的数组索引处,从第一个表达式返回值,在其他值处返回0.0。”