interp1d#
- класс scipy.interpolate.interp1d(x, y, kind='linear', ось=-1, copy=True, bounds_error=None, fill_value=nan, assume_sorted=False)[источник]#
Интерполяция одномерной функции (устаревшая).
Наследие
Этот класс считается устаревшим и больше не будет получать обновления. Хотя у нас в настоящее время нет планов по его удалению, мы рекомендуем использовать более современные альтернативы для нового кода. Для руководства по предполагаемым заменам для
interp1dсм. 1-D интерполяция.x и y являются массивами значений, используемыми для аппроксимации некоторой функции f:
y = f(x). Этот класс возвращает функцию, чей метод вызова использует интерполяцию для нахождения значения новых точек.- Параметры:
- x(npoints, ) array_like
1-D массив действительных значений.
- y(…, npoints, …) array_like
N-мерный массив действительных значений. Длина y вдоль оси интерполяции должна быть равна длине x. Используйте
axisпараметр для выбора правильной оси. В отличие от других интерполяторов, ось интерполяции по умолчанию является последней осью y.- kindstr или int, необязательно
Задает тип интерполяции в виде строки или целого числа, указывающего порядок сплайн-интерполятора для использования. Строка должна быть одной из: 'linear', 'nearest', 'nearest-up', 'zero', 'slinear', 'quadratic', 'cubic', 'previous' или 'next'. 'zero', 'slinear', 'quadratic' и 'cubic' относятся к сплайн-интерполяции нулевого, первого, второго или третьего порядка; 'previous' и 'next' просто возвращают предыдущее или следующее значение точки; 'nearest-up' и 'nearest' различаются при интерполяции половинных целых чисел (например, 0.5, 1.5) тем, что 'nearest-up' округляет вверх, а 'nearest' округляет вниз. По умолчанию используется 'linear'.
- осьint, необязательный
Ось в
yмассив, соответствующий значениям координаты x. В отличие от других интерполяторов, по умолчаниюaxis=-1.- copybool, необязательно
Если
True, класс создаёт внутренние копии x и y. ЕслиFalse, ссылки наxиyиспользуются, если возможно. По умолчанию — копирование.- bounds_errorbool, необязательно
Если True, ValueError вызывается каждый раз, когда предпринимается попытка интерполяции значения вне диапазона x (где необходима экстраполяция). Если False, значения вне границ присваиваются
fill_value. По умолчанию возникает ошибка, если толькоfill_value="extrapolate".- fill_valuearray-like или (array-like, array_like) или "extrapolate", опционально
если ndarray (или float), это значение будет использоваться для заполнения запрашиваемых точек вне диапазона данных. Если не указано, то по умолчанию используется NaN. Объект, подобный массиву, должен правильно транслироваться на размерности неинтерполяционных осей.
Если кортеж из двух элементов, то первый элемент используется как заполняющее значение для
x_new < x[0]и второй элемент используется дляx_new > x[-1]. Всё, что не является кортежем из 2 элементов (например, список или ndarray, независимо от формы), считается единым аргументом типа массива, предназначенным для использования в качестве обоих границ, какbelow, above = fill_value, fill_value. Использование кортежа из двух элементов или ndarray требуетbounds_error=False.Добавлено в версии 0.17.0.
Если "extrapolate", то точки вне диапазона данных будут экстраполированы.
Добавлено в версии 0.17.0.
- assume_sortedbool, необязательно
Если False, значения x могут быть в любом порядке и сначала сортируются. Если True, x должен быть массивом монотонно возрастающих значений.
- Атрибуты:
fill_valueЗначение заполнения.
Методы
__call__(x)Вычислить интерполянт
Смотрите также
splrep,splevСплайн-интерполяция/сглаживание на основе FITPACK.
UnivariateSplineОбъектно-ориентированная обёртка для подпрограмм FITPACK.
interp2d2-D интерполяция
Примечания
Вызов
interp1dпри наличии NaN во входных значениях приводит к неопределённому поведению.Входные значения x и y должен быть преобразуем в float значения, такие как int или float.
Если значения в x не уникальны, результирующее поведение не определено и зависит от выбора kind, т.е. изменение kind изменит поведение для дубликатов.
Примеры
>>> import numpy as np >>> import matplotlib.pyplot as plt >>> from scipy import interpolate >>> x = np.arange(0, 10) >>> y = np.exp(-x/3.0) >>> f = interpolate.interp1d(x, y)
>>> xnew = np.arange(0, 9, 0.1) >>> ynew = f(xnew) # use interpolation function returned by `interp1d` >>> plt.plot(x, y, 'o', xnew, ynew, '-') >>> plt.show()