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]