如何克服scipy.interpolate.interp1d()中的y数组长度错误?

时间:2015-03-19 15:45:16

标签: python numpy scipy

我将基于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)

1 个答案:

答案 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

我重命名了一些变量来澄清什么是。