LinearNDInterpolator#
- класс scipy.interpolate.LinearNDInterpolator(точки, values, fill_value=np.nan, масштабировать=False)#
Кусочно-линейный интерполятор в N > 1 измерениях.
Добавлено в версии 0.9.
- Параметры:
- точкиndarray чисел с плавающей точкой, форма (npoints, ndims); или Delaunay
2-D массив координат точек данных или предварительно вычисленная триангуляция Делоне.
- valuesndarray из float или complex, форма (npoints, …), опционально
N-мерный массив значений данных в точки. Длина values вдоль первой оси должно быть равно длине точки. В отличие от некоторых интерполяторов, ось интерполяции не может быть изменена.
- fill_valuefloat, опционально
Значение, используемое для заполнения запрошенных точек вне выпуклой оболочки входных точек. Если не указано, то по умолчанию
nan.- масштабироватьbool, необязательно
Масштабировать точки до единичного куба перед выполнением интерполяции. Это полезно, если некоторые из входных измерений имеют несоизмеримые единицы и различаются на много порядков величины.
Методы
__call__(xi)Вычислить интерполятор в заданных точках.
Смотрите также
griddataИнтерполяция неструктурированных D-D данных.
NearestNDInterpolatorИнтерполятор ближайшего соседа в N измерениях.
CloughTocher2DInterpolatorКусочно-кубический, C1-гладкий, минимизирующий кривизну интерполятор в 2D.
interpnИнтерполяция на регулярной или прямоугольной сетке.
RegularGridInterpolatorИнтерполятор на регулярной или прямоугольной сетке в произвольных размерностях (
interpnоборачивает этот класс).
Примечания
Интерполянт строится путем триангуляции входных данных с помощью Qhull [1], и на каждом треугольнике выполняется линейная барицентрическая интерполяция.
Примечание
Для данных на регулярной сетке используйте
interpnвместо этого.Ссылки
Примеры
Мы можем интерполировать значения на двумерной плоскости:
>>> from scipy.interpolate import LinearNDInterpolator >>> import numpy as np >>> import matplotlib.pyplot as plt >>> rng = np.random.default_rng() >>> x = rng.random(10) - 0.5 >>> y = rng.random(10) - 0.5 >>> z = np.hypot(x, y) >>> X = np.linspace(min(x), max(x)) >>> Y = np.linspace(min(y), max(y)) >>> X, Y = np.meshgrid(X, Y) # 2D grid for interpolation >>> interp = LinearNDInterpolator(list(zip(x, y)), z) >>> Z = interp(X, Y) >>> plt.pcolormesh(X, Y, Z, shading='auto') >>> plt.plot(x, y, "ok", label="input point") >>> plt.legend() >>> plt.colorbar() >>> plt.axis("equal") >>> plt.show()