我正在尝试学习python并开始我想用方形误差函数来实现多项式曲线拟合。所以下一个列表是numpy.polyfit函数的系数,其中多项式的阶数从0到4:
[array([-0.01819394]), array([-1.40744691, 0.68552951]), array([ 0.80998048, -2.21742739, 0.80552662]), array([ 22.23999663, -32.55001446, 10.44015094, 0.03673661]), array([ -2.85384060e+00, 2.79476778e+01, -3.61085071e+01,
1.11448029e+01, 1.79458912e-02]), array([ -5.89070987e+01, 1.44413906e+02, -1.00532825e+02,
9.34450117e+00, 5.69193834e+00, 7.78017045e-02])]
输出来自以下代码:
polyfit = []
for i in range(0,numberofdata):
polyfit.append(numpy.polyfit(x,noisedsignal,i))
列出这些结果是否被认为是一种好方法?如果是,在找到每个订单的平方误差之后如何按顺序获取每个值?
答案 0 :(得分:1)
这很好。如果它从一开始就清楚你将要做多少适合,那么使用二维数组可能是有意义的。
在任何情况下,polyfit
的结果都可以直接用于numpy.polyval
函数来评估拟合多项式。您也可以执行类似
for p in polyfits:
print(" + ".join(
"%s x ** %s" % (coeff, len(p) - n - 1)
for n, coeff in enumerate(p)
))
打印出多项式。在此处使用列表没有相关的惩罚。
答案 1 :(得分:0)
不,不是。
您应该执行以下操作:
your_variable = [[-0.01819394],[ - 1.40744691,0.68552951],[0.80998048,-2.21742739,0.80552662],[22.23999663,-32.55001446,10.44015094,0.03673661],[ - 。2.85384060e + 00,2.794076778e + 01, -3.61085071e + 01, 1.11448029e + 01,1.79408912e-02],[ - 5.89070987e + 01,1.44413906e + 02,-1.00532825e + 02, 9.34450117e + 00,5.69193834e + 00,7.78017045e-02]]
现在要检索一些元素,你只需按照你应该使用本机Python列表(数组)对象的方式。
赞your_variable[1][1]
会0.68552951
而your_variable[4][2]
会-3.61085071e+01
答案 2 :(得分:-2)
您有一个列表,其中包含元组包含列表的元组。这真的没有必要。首先,如果你想定义它们,为什么在元组中呢?
array([ - 0.01819394])它是一个有列表的元组。
元组进程比列表进程更快。但是元组是不可变的变量。我通常使用列表,它们之间没有很大的速度差异,你可以改变列表元素。
例如,您想在数组中调用 0.68552951 ([ - 1.40744691,0.68552951])
list=[array([-0.01819394]),array([-1.40744691, 0.68552951]),...]
print (list[1][1])
它表示列表第二个元素的第二个元素。