python - curve_fit 使调用 func 引发 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传递,不能用作索引。
解决方案
推荐阅读
- python - 在多个 h5 文件上训练 ANN Keras(基于 Tensorflow)模型
- mysql - MySQL / MariaDB 生成安全序列
- mysql - 找不到外键格式错误的原因
- python - 搜索哪里出错了?
- javascript - 如何根据所选月份的天数隐藏表格中的列?
- python - 如何将输入从一个文件导入到另一个文件并同步?
- php - 在 Symfony 4 中设置多个内核
- html - 内容文本与我的固定标题重叠
- java - KerberosAuthenticationProvider 与 KerberosServiceAuthenticationProvider
- pandas - 无法将大型火花数据框保存为泡菜