python插值算法_基于SciPy规则网格的Python快速二维插值算法

我有一个规则的训练值网格(向量x和y分别有xmesh和ymesh网格以及zmesh的已知值),但有一个要插值的分散/不规则值组(向量x I和yI,其中我们对zI[0]=f(xI[0],yI[0])。。。zI[N-1]=f(xI[N-1],yI[N-1])。作为优化问题的一部分,这种插值将被调用数百万次,因此性能太重要,不能简单地使用生成网格和获取跟踪的方法。

到目前为止,我已经找到了一个接近我想要的scipy.interpolate函数,Bpf函数。但是,因为它有一个分散的输入,我假设它没有很好的性能,我想用样条曲线,线性,最近邻插值方法来测试它,我理解得更好,我预计会更快。所有实现这些的方法,我可以发现,将规则网格作为训练数据(如RectBivariateSpline)似乎也需要规则网格来插值。

希望这段代码能说明我的问题。import numpy as np

import scipy as sp

import scipy.interpolate as interp

x = np.arange(0,2*np.pi,.1)

y = x

xmesh,ymesh = np.meshgrid(x,y)

zmesh = np.sin(xmesh)+np.cos(ymesh)

rbf = interp.Rbf(xmesh, ymesh, zmesh, epsilon=2)

xI = np.arange(0,np.pi,.05)

yI = xI

XI, YI = np.meshgrid(xI,yI)

# Notice how this is happy to take a vector or grid as input

zI = rbf(xI, yI)

ZI = rbf(XI,YI) # equiv. to zImesh

myspline = interp.RectBivariateSpline(x, y, zmesh)

# myspline takes vectors as input but makes them into meshes for evaluation

splineoutput = myspline(xI, yI)

# myspline returns ZI but I want zI

print(splineoutput)

print(ZI)

print(zI)

有什么我可以做的,使用一个函数,如矩形二元样条函数,但得到zI(矢量)而不是zI(网格)?或者,是否有另一个函数族可以像我希望的那样在其他优化方法上工作,如果是,我应该寻找什么?

只是一个快速提醒,我要找的是一个快速的优化技术,对相对较大的数据数组(20000多个条目),网格点之间的距离很小,而且数据非常平滑。我怀疑有一个很好的,简单的方法来处理现有的库,但是我找不到。谢谢你的帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值