存储scipy griddata使用的权重以便重新使用

5
我正在尝试将一个非结构化网格M1的数据插值到另一个非结构化网格M2中。为此,scipy.interpolate.griddata似乎很好用。
然而,我需要多次从M1插值到M2,只更改数据而不更改网格。我猜,在内部,scipy.interpolate.griddata在从M1插值到M2时定义了一些权重系数,这可能是计算中比较耗费时间的部分之一。
因此,我希望避免每次重新计算这些权重。有没有方法可以做到这一点?即多次从一个非结构化网格插值到另一个非结构化网格,两者保持不变,避免重新计算scipy.interpolate.griddata(或等效物)的内部内容?

你能帮我解决类似的问题吗?https://stackoverflow.com/q/61098743/13258046 - Deep001
1个回答

7

一种解决方法是使用Scipy函数LinearNDInterpolator,并提前计算好Delaunay三角剖分:

from scipy.spatial import Delaunay
from scipy.interpolate import LinearNDInterpolator

tri = Delaunay(mesh1)  # Compute the triangulation

# Perform the interpolation with the given values:
interpolator = LinearNDInterpolator(tri, values_mesh1)
values_mesh2 = interpolator(mesh2)

mesh1 是一个(点数 * 维度)的数组。

注意:CloughTocher2DInterpolator 可用于非线性插值。 griddata 使用 LinearNDInterpolatorCloughTocher2DInterpolator


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接