Python 尝试从numpy多边形拟合获取协方差矩阵时出错

Python 尝试从numpy多边形拟合获取协方差矩阵时出错,python,python-2.7,numpy,Python,Python 2.7,Numpy,我试图找到一个函数的最大值和最小值,我用numpy多项式拟合,我还想要那个拟合的协方差矩阵。但是,这似乎不起作用,以下是我的代码: import numpy as np from matplotlib.pyplot import * from scipy.signal import argrelmax,argrelmin a=[] x=[] y=[] b=[] with open('15.txt') as f: lines=f.readlines() for i in range

我试图找到一个函数的最大值和最小值,我用numpy多项式拟合,我还想要那个拟合的协方差矩阵。但是,这似乎不起作用,以下是我的代码:

import numpy as np
from matplotlib.pyplot import *
from scipy.signal import argrelmax,argrelmin
a=[]
x=[]
y=[]
b=[]
with open('15.txt') as f:
    lines=f.readlines()
    for i in range(len(lines)):
        a.append(lines[i].split())
for i in range(np.size(a)/np.size(a[0])):
    b.append(np.double(a[i][0]))
    x.append(np.double(a[i][1]))
    y.append(np.double(a[i][2]))
plx=[]
ply=[]
for i in range(np.size(x)):
    if(x[i]>0.3 and x[i]<3):
        plx.append(x[i])
        ply.append(y[i])
c,v=np.polyfit(plx,ply,30,cov=True)
f=np.poly1d(c)
x_new=np.linspace(plx[0],plx[-1],100)
y_new=f(x_new)
maxm=x_new[argrelmax(y_new)[0]]
minm=x_new[argrelmin(y_new)[0]]
print maxm
print minm
figure()
plot(x_new,y_new)
show()
将numpy导入为np
从matplotlib.pyplot导入*
从scipy.signal导入argrelmax,argrelmin
a=[]
x=[]
y=[]
b=[]
将open('15.txt')作为f:
行=f.读行()
对于范围内的i(len(行)):
a、 追加(行[i].split())
对于范围(np.尺寸(a)/np.尺寸(a[0])内的i:
b、 追加(np.double(a[i][0]))
x、 附加(np.double(a[i][1]))
y、 追加(np.double(a[i][2]))
plx=[]
厚度=[]
对于范围内的i(np.尺寸(x)):
如果(x[i]>0.3和x[i]22 c,v=np.polyfit(plx,ply,30,cov=True)
23打印v
24 f=np.1d(c)
c:\python27\lib\site packages\numpy\lib\polynomy.pyc,采用polyfit格式(x,y,deg,rco
nd,满,w,cov)
599 fac=剩余/(len(x)-阶数-2.0)
600如果y.ndim==1:
-->601返回c,Vbase*fac
602其他:
603返回c,Vbase[:,:,NX.newaxis]*fac
ValueError:操作数无法与形状(31,31)(0,)一起广播

请将完整的错误回溯添加到您的问题中。打印“c”当您使用
cov=False
运行它时,或者将您的输入数据与拟合一起绘制,并告诉我们您发现了什么,请告诉我们。我怀疑它是否真的成功拟合。您是否在拟合之前检查了
plx
ply
以排除拉入=>拉出?添加了回溯。绘图确实显示了成功拟合,它显示了多项式sim根据获得的数据,前面看起来都很好。我不太明白你检查plx和ply是什么意思?如果你是这个意思,我在拟合之前从原始数据的开头和结尾排除了一些糟糕的数据。告诉我们
plx
ply
是什么。它们的长度和内容是什么?
ValueError                                Traceback (most recent call last)
C:\Users\Documents\Measurements\lab3.py in <module>()
     20                 plx.append(x[i])
     21                 ply.append(y[i])
---> 22 c,v=np.polyfit(plx,ply,30,cov=True)
     23 print v
     24 f=np.poly1d(c)

c:\python27\lib\site-packages\numpy\lib\polynomial.pyc in polyfit(x, y, deg, rco
nd, full, w, cov)
    599         fac = resids / (len(x) - order - 2.0)
    600         if y.ndim == 1:
--> 601             return c, Vbase * fac
    602         else:
    603             return c, Vbase[:,:, NX.newaxis] * fac

ValueError: operands could not be broadcast together with shapes (31,31) (0,)