存储 scipy griddata 使用的权重以供重用

Zor*_*b29 4 optimization interpolation scipy

我试图将数据从非结构化网格M1插入到另一个非结构化网格M2。对于这一点,scipy.interpolate.griddata似乎不错。

但是,我需要多次从M1插值到M2,只更改数据而不是网格。我猜想,scipy.interpolate.griddata在从M1插入到M2时,它在内部定义了一些权重系数,这可能是计算的昂贵部分之一。

因此,我想避免每次都重新计算这些权重。有没有办法做到这一点?即,从一个非结构化网格多次插值到另一个非结构化网格,两者都保持不变,避免重新计算scipy.interpolate.griddata(或等效)的内部结构?

xdz*_*ze2 7

一种解决方案是使用LinearNDInterpolator带有预先计算的Delaunay三角剖分的Scipy 函数:

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)
Run Code Online (Sandbox Code Playgroud)

mesh1 是一个(点数*dim)数组。

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