微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

调用 func 的 curve_fit 会引发 IndexError

如何解决调用 func 的 curve_fit 会引发 IndexError

我正在尝试使用 curve_fit 将函数 TGp_xx 中的参数 eta_H 拟合到某些数据(x_data、data_num_xx)。现在,下面的代码是我正在使用的代码的简化版本,它本身无法工作,但我希望这个问题具有足够的概念性,即使从这里也可以理解

from scipy.optimize import curve_fit

Lx        = 150
y_cut     = 20

data = np.loadtxt("../dump/results.dat")

ux       = data[:,3]
ux       = np.reshape(ux,(Ly,Lx))


def Par_x(x,y,vec):
    fdx = vec[(x+1)%Lx,y]    
    fsx = vec[(x-1+Lx)%Lx,y]    

    return (fdx - fsx) / 2.0

def TGp_xx(x,eta_H): return 2*eta_H*Par_x(x,y_cut,ux)

x_data = np.arange(Lx,dtype=np.int)
data_num_xx  = np.empty(Lx,dtype='float64')  #this is just a placeholder

popt_xx,pcov_xx = curve_fit(TGp_xx,x_data,data_num_xx)

我在 Par_x 中引发了 IndexError:

fdx = vec[(x+1)%Lx,y]    

IndexError: 用作索引的数组必须是整数(或布尔值)类型

我尝试了一些更简单的方法,例如在 curve_fit 之外调用 TGp_xx(x_data,some_constant),并且它有效。我真的不明白为什么在curve_fit内部我得到IndexError,好像我将一个浮点值(或一个浮点数组)作为x传递,它不能用作索引。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。