gpt4 book ai didi

python - 坐标对的 SciPy interp2D

转载 作者:太空狗 更新时间:2023-10-30 01:00:22 24 4
gpt4 key购买 nike

我正在使用 scipy.interpolate.interp2d 为表面创建插值函数。然后我有两个真实数据数组,我想为其计算插值点。如果我将这两个数组传递给 interp2d 函数,我会得到一个包含所有点的数组,而不仅仅是点对。

我的解决方案是将两个数组压缩成一个坐标对列表,并将其传递给循环中的插值函数:

f_interp = interpolate.interp2d(X_table, Y_table,Z_table, kind='cubic')

co_ords = zip(X,Y)
out = []
for i in range(len(co_ords)):
X = co_ords[i][0]
Y = co_ords[i][1]
value = f_interp(X,Y)
out.append(float(value))

我的问题是,是否有更好(更优雅,Pythonic?)的方法来实现相同的结果?

最佳答案

一次传递所有点可能比在 Python 中循环遍历它们快得多。你可以使用 scipy.interpolate.griddata :

Z = interpolate.griddata((X_table, Y_table), Z_table, (X, Y), method='cubic')

scipy.interpolate.BivariateSpline 类之一,例如SmoothBivariateSpline :

itp = interpolate.SmoothBivariateSpline(X_table, Y_table, Z_table)
# NB: choose grid=False to get an (n,) rather than an (n, n) output
Z = itp(X, Y, grid=False)

CloughTocher2DInterpolator也以类似的方式工作,但没有 grid=False 参数(它总是返回一维输出)。

关于python - 坐标对的 SciPy interp2D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35360756/

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