scipy.interpolate.

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()
../../_images/scipy-interpolate-LinearNDInterpolator-1.png