scipy.interpolate.

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.

interp2d

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