Хранение весов, используемых scipy griddata для повторного использования
Я пытаюсь интерполировать данные из неструктурированной сетки M1 в другую неструктурированную сетку M2. За это, scipy.interpolate.griddata
выглядит неплохо.
Однако мне нужно будет много раз интерполировать от M1 до M2, меняя только данные, а не сетки. Я думаю, что внутренне scipy.interpolate.griddata
определяет некоторые весовые коэффициенты при интерполяции от M1 до M2 и что это может быть одной из дорогих частей вычисления.
Поэтому я хотел бы избежать пересчета этих весов каждый раз. Есть ли способ сделать это? То есть, много раз интерполируя из одной неструктурированной сетки в другую неструктурированную сетку, обе сохраняли постоянными, избегая повторного вычисления внутренних scipy.interpolate.griddata
(или эквивалент)?
1 ответ
Решение состоит в том, чтобы использовать LinearNDInterpolator
Функция Сципи с предварительно вычисленной триангуляцией Делоне:
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
использует либо LinearNDInterpolator
или же CloughTocher2DInterpolator
,