我想对我的(m x n)X和Y数组进行最小二乘拟合,如下所示。
def func(x,m,c):
lsq=(m*x) + c
return lsq
xdata=[[1,2,3],[4,5,6],[7,8,9]]
ydata=[[10,20,30],[10,20,30],[10,20,30]]
coeff, var = curve_fit(func,xdata,ydata)
一种简单的解决方案是使用for
循环
for i in range(len(xdata)):
xdata_ = xdata[i]
ydata_ = ydata[i]
coeff, var = curve_fit(func,xdata_,ydata_)
但是使用for
循环是一个非常缓慢的过程,因为在实际情况下,数组的大小为6000 x6000。我有十个大小为6000 x 6000的数组。从这十个数组中每个元素( 36000000),我需要进行最小二乘拟合。我的ydata已修复,如下所示。现在,xdata是十个数组中的每个元素。
xdata = [[array1[0],array2[0],...array10[0]],[array1[1],array2[1],...array10[1]],...[array1[36000000],array2[36000000],...array10[36000000]]]
ydata = [[1e6,2e6,...10e6],[1e6,2e6,...10e6],...[1e6,2e6,...10e6]]
有什么方法可以在没有循环的情况下将xdata和ydata加载到curve_fit函数中吗?谢谢。