optimization - 存储 scipy griddata 使用的权重以供重复使用

标签 optimization scipy interpolation

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

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

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

最佳答案

解决方案是使用 LinearNDInterpolator具有预先计算的 Scipy 函数 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

关于optimization - 存储 scipy griddata 使用的权重以供重复使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51858194/

相关文章:

python - 英特尔 MKL 错误阻止我在 Python 中导入 Scipy

python - 访问 scipy.sparse 矩阵中行/列中非零值的最有效方法

r - 3D 表面插值

php - PHP错误处理: my code is not optimized

MYSQL中型查询优化与子查询

python - 使用 NumPy/SciPy 的向量值函数插值

c# - 如何在vtk中为非结构化网格(.vtu)着色?

c - llvm优化

php - 优化:在哪里处理数据?数据库、服务器还是客户端?

ruby-on-rails - 多态回形针覆盖同名文件