【问题标题】:Vectorize Cublic Spline interpolation Python向量化三次样条插值 Python
【发布时间】:2021-02-01 21:07:13
【问题描述】:

我有以下功能,我正在尝试对一整套数据执行。

def spln_inter_curve2(x,y,x_new):
    f = interpolate.interp1d(x, y,kind='cubic')
    return f(x_new)

我希望能够将 x 和 y 作为数组形状传递 (1892,15) 并返回并插入形状为 (1892,22) 的数组(x_new 的形状)。插值数组的每一行代表 x 和 y 的每一行。

如果我将数组传递给函数,我会收到以下错误:

ValueError: x 和 y 数组沿插值轴的长度必须相等。

这个作品:

y_new= spln_inter_curve2(x[1000],y[1000],xnew[1000])

我得到了该行的正确插值数据:

array([4.57 , 4.43 , 4.33 , 4.31 , 4.38 , 4.29、4.29621659、4.39、4.46193642、4.51、 4.54799165、4.59、4.64386699、4.7、4.74708955、 4.79、4.8326029、4.87、4.89558681、4.92、 4.95454998, 5.015 ])

这给了我上面提到的错误:

y_new= spln_inter_curve2(x,y,xnew)

我想我可以使用 a (apply,lamda) 组合,但我想知道是否有另一个插值函数可以让我这样做。

在尝试了许多不同的事情并有点沮丧之后,我决定这样做:

y_new= np.array([spln_inter_curve2(x[x],y[x],xnew[x]) for x in range(0,len(swaps))])

它工作得很好,因为数组不是那么大,所以它足够快。我相信一定有更好的方法。

【问题讨论】:

    标签: python-3.x numpy scipy


    【解决方案1】:

    您可以使用axis 参数来选择y 轴。但是x数组需要是一维的(并且长度与y的插值轴兼容)

    【讨论】:

      猜你喜欢
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多