python

时间:2018-10-14 09:34:48

标签: python jupyter-notebook

考虑到我有以下数据:

0.000000000000000000e+00 4.698409927534825670e-01
1.052631578947368363e+00 8.864688755521996200e+00
2.105263157894736725e+00 1.554529316011567630e+01
3.157894736842105310e+00 9.767558170900922931e+00
4.210526315789473450e+00 2.670221074763470881e+01

现在,我想使用此数据进行一些统计分析。

%pylab inline
# Loads numpty
my_data = loadtxt("numbers.dat")
dataxaxis = my_data[:,0]
datayaxis = my_data[:,1]

我知道我将数据存储为变量,因此将第一列用作x轴的xdata,将第二列用作y轴的y数据。

我正在学习curvefit()函数,该函数在寻找最佳拟合线(LOBF)梯度和截距时与polyfit()相似。

我了解到,首先我必须定义直线为y = mx+c的功能。

在这里我感到困惑。
根据讲师的讲,我需要将xdata作为参数,还要定义渐变和拦截作为参数:

def straightline(dataxaxis, m, c):
    "Returns values of y according to y = mx + c"
    return m*dataxaxis + c

然后我可以这样调用curvefit()函数:

lineinfo = curve_fit(line, dataxaxis, datayaxis)
lineparams = lineinfo[0]
m = lineparams[0]
c = lineparams[1]

给出了相应的值。

但是,当我调用函数straightline作为curve_fit中的第一个参数时,我没有传递任何有关dataxaxis的信息,也没有传递有关m或{ {1}}仍然计算梯度和截距以返回矩阵。

这怎么可能?

0 个答案:

没有答案