gpt4 book ai didi

python - 使用 SciPy 规则网格在 Python 中进行快速二维插值以进行分散/不规则评估

转载 作者:太空狗 更新时间:2023-10-29 20:19:06 24 4
gpt4 key购买 nike

我有一个规则的训练值网格(向量 x 和 y 分别有网格 xmesh 和 ymesh 以及已知的 zmesh 值)但是要插值的一组分散/参差不齐/不规则的值(向量 xI 和 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)

我可以做些什么来使用像 RectBivariateSpline 这样的函数来获得 zI(向量)而不是 ZI(网格)?或者,是否有另一系列函数以我想要的替代优化方法的方式工作,如果是这样,我应该寻找什么?

只是一个快速提醒,我正在寻找的是一种快速优化技术,用于处理相对较大的数据数组(20,000 多个条目),网格点之间的距离很小,并且数据非常平滑。我怀疑有一种很好、简单的方法可以用现有的库来做我需要的事情,但我找不到它。感谢您的帮助。

最佳答案

关于python - 使用 SciPy 规则网格在 Python 中进行快速二维插值以进行分散/不规则评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11726484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com