scipy.interpolate.

interpn#

scipy.interpolate.interpn(точки, values, xi, метод='linear', bounds_error=True, fill_value=nan)[источник]#

Многомерная интерполяция на регулярных или прямоугольных сетках.

Строго говоря, поддерживаются не все регулярные сетки - эта функция работает на прямолинейный сетки, то есть прямоугольная сетка с равномерным или неравномерным шагом.

Параметры:
точкикортеж ndarray из чисел с плавающей запятой, с формами (m1, ), …, (mn, )

Точки, определяющие регулярную сетку в n измерениях. Точки в каждом измерении (т.е. каждый элемент кортежа points) должны быть строго возрастающими или убывающими.

valuesarray_like, shape (m1, …, mn, …)

Данные на регулярной сетке в n измерениях. Принимаются комплексные данные.

xindarray формы (…, ndim)

Координаты для выборки данных на сетке

методstr, optional

Метод интерполяции для выполнения. Поддерживаются "linear", "nearest", "slinear", "cubic", "quintic", "pchip" и "splinef2d". "splinef2d" поддерживается только для двумерных данных.

bounds_errorbool, необязательно

Если True, при запросе интерполированных значений вне области входных данных возникает ValueError. Если False, то fill_value используется.

fill_valueчисло, опционально

Если указано, значение для использования в точках вне области интерполяции. Если None, значения вне области экстраполируются. Экстраполяция не поддерживается методом "splinef2d".

Возвращает:
values_xndarray, форма xi.shape[:-1] + values.shape[ndim:]

Интерполированные значения в xi. См. примечания о поведении при xi.ndim == 1.

Смотрите также

NearestNDInterpolator

Интерполяция ближайшего соседа на неструктурированных данных в N измерениях

LinearNDInterpolator

Кусочно-линейный интерполянт на неструктурированных данных в N измерениях

RegularGridInterpolator

интерполяция на регулярной или прямоугольной сетке в произвольных размерностях (interpn оборачивает этот класс).

RectBivariateSpline

Бивариантная сплайн-аппроксимация по прямоугольной сетке

scipy.ndimage.map_coordinates

интерполяция на сетках с равным шагом (подходит, например, для передискретизации N-мерных изображений)

Примечания

Добавлено в версии 0.14.

В случае, если xi.ndim == 1 новая ось вставляется в позицию 0 возвращаемого массива values_x, поэтому его форма становится (1,) + values.shape[ndim:].

Если входные данные таковы, что размерности ввода имеют несоизмеримые единицы и различаются на много порядков величины, интерполянт может иметь числовые артефакты. Рассмотрите возможность масштабирования данных перед интерполяцией.

Примеры

Вычислить простую примерную функцию на точках регулярной 3-D сетки:

>>> import numpy as np
>>> from scipy.interpolate import interpn
>>> def value_func_3d(x, y, z):
...     return 2 * x + 3 * y - z
>>> x = np.linspace(0, 4, 5)
>>> y = np.linspace(0, 5, 6)
>>> z = np.linspace(0, 6, 7)
>>> points = (x, y, z)
>>> values = value_func_3d(*np.meshgrid(*points, indexing='ij'))

Вычислить интерполирующую функцию в точке

>>> point = np.array([2.21, 3.12, 1.15])
>>> print(interpn(points, values, point))
[12.63]