在我之前的两篇文章( post1 , post 2 )之后,我现在已经达到了使用scipy找到曲线拟合的程度。 但是,我的代码产生了错误。
我正在使用的.csv文件示例位于post1中。 我试图从互联网上复制和替换示例,但它似乎没有起作用。
这是我的( .py文件)
import pandas as pd
import numpy as np
from scipy import optimize
df = pd.read_csv("~/Truncated raw data hcl.csv", usecols=['time' , '1mnaoh trial 1']).dropna()
data1 = df
array1 = np.asarray(data1)
x , y = np.split(array1,[-1],axis=1)
def func(x, a , b , c , d , e):
return a + (b - a)/((1 + c*np.exp(-d*x))**(1/e))
popt, pcov = optimize.curve_fit(func, x , y , p0=[23.2, 30.1 , 1 , 1 , 1])
popt
从我所做的有限研究来看,x和y数组可能存在问题。 标题说明了写入的错误。 这是一个minpack.error 。
编辑:返回错误
ValueError: object too deep for desired array
Traceback (most recent call last):
File "~/test2.py", line 15, in
popt, pcov = optimize.curve_fit(func, x , y , p0=[23.2, 30.1 , 1 , 1 , 1])
File "~/'virtualenvname'/lib/python3.7/site-packages/scipy/optimize/minpack.py", line 744, in curve_fit
res = leastsq(func, p0, Dfun=jac, full_output=1, **kwargs)
File "~/'virtualenvname'/lib/python3.7/site-packages/scipy/optimize/minpack.py", line 394, in leastsq
gtol, maxfev, epsfcn, factor, diag)
minpack.error: Result from function call is not a proper array of floats.
谢谢。