gpt4 book ai didi

python - 函数调用的结果不是 float 组

转载 作者:行者123 更新时间:2023-11-30 22:01:50 24 4
gpt4 key购买 nike

继我之前的两篇文章( post1post 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 <module>
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.

谢谢。

最佳答案

分割后,x和y的形状为(..., 1)。这意味着它们本身的每个元素都是长度为 1 的数组。您想首先展平数组,即通过 x = np.flatten(x) 。但我认为你根本不需要 split 。您只需执行以下操作

array1 = np.asarray(data1).T
x , y = array1

您希望 x 和 y 为 array1 的第一列和第二列。因此,实现此目的的一个简单方法是首先转置数组。您还可以通过 [:,0][:,1] 访问它们。

关于python - 函数调用的结果不是 float 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53926046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com