我将基于this示例的函数放在一起,用于平滑matplotlib线,但是当我尝试插入y数据时,我得到错误“ValueError:x和y数组的长度必须沿插值轴相等”。我假设它希望我有一个空值数组,x数据的numpy.linspace的长度,y数据通过它正确分配,但我不知道如何做到这一点。我甚至都不知道这是不对的。
def spline_it(key):
y = [i[1] for i in datapoints[key]]
x_smooth = np.linspace(0,len(y),len(y)*10)
y_smooth = interp1d(x_smooth, y, kind='cubic')
return x_smooth, y_smooth(x_smooth)
答案 0 :(得分:1)
interp1d
的第一个参数必须与第二个参数大小匹配。它们一起定义原始数据,即相应x
点的y
坐标。
尝试:
def spline_it(key):
y = [i[1] for i in datapoints[key]]
x = np.arange(len(y))
interpolator = interp1d(x, y, kind='cubic')
x_smooth = np.linspace(0,len(y),len(y)*10)
y_smooth = interpolator(x_smooth)
return x_smooth, y_smooth
我重命名了一些变量来澄清什么是。