微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

向量化三次样条插值 Python

如何解决向量化三次样条插值 Python

我有以下功能,我正在尝试对整个数据集执行该功能

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

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

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

错误: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,xnew)

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

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

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

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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。