Spec-Zone.ru › NumPy 1.18

numpy.interp

numpy.interp(x, xp, fp, left=None, right=None, period=None) [source]

Линейная интерполяция в одномерном случае.

Возвращает одномерный кусочно-линейный интерполянт для функции с заданными дискретными точками данных (xp, fp), вычисленный в точках x.

Параметры
xarray_like

Координаты x, в которых необходимо вычислить интерполированные значения.

xp1-D sequence of floats

Координаты x точек данных, должны быть возрастающими, если аргумент period не указан. В противном случае, xp внутренне сортируется после нормализации периодических границ с xp = xp % period.

fp1-D sequence of float or complex

Координаты y точек данных, длина совпадает с длиной xp.

leftoptional float or complex corresponding to fp

Значение, возвращаемое для x < xp[0], по умолчанию fp[0].

rightoptional float or complex corresponding to fp

Значение, возвращаемое для x > xp[-1], по умолчанию fp[-1].

periodNone or float, optional

Период для координат x. Этот параметр позволяет правильно интерполировать угловые координаты x. Параметры left и right игнорируются, если period указан.

Введено в версии 1.10.0.

Возвращает
yfloat or complex (corresponding to fp) or ndarray

Интерполированные значения, форма совпадает с формой x.

Возможные исключения
ValueError

Если xp и fp имеют разную длину. Если xp или fp не являются одномерными последовательностями. Если period == 0

Примечания

Последовательность координат x ожидается возрастающей, но это не проверяется явно. Однако, если последовательность xp не является возрастающей, результаты интерполяции бессмысленны.

Обратите внимание, что, так как NaN не сортируется, xp также не может содержать NaN.

Простая проверка на то, что xp строго возрастает:

np.all(np.diff(xp) > 0)

Примеры

>>> xp = [1, 2, 3]
>>> fp = [3, 2, 0]
>>> np.interp(2.5, xp, fp)
1.0
>>> np.interp([0, 1, 1.5, 2.72, 3.14], xp, fp)
array([3.  , 3.  , 2.5 , 0.56, 0.  ])
>>> UNDEF = -99.0
>>> np.interp(3.14, xp, fp, right=UNDEF)
-99.0

Построим интерполянт для синусоидальной функции:

>>> x = np.linspace(0, 2*np.pi, 10)
>>> y = np.sin(x)
>>> xvals = np.linspace(0, 2*np.pi, 50)
>>> yinterp = np.interp(xvals, x, y)
>>> import matplotlib.pyplot as plt
>>> plt.plot(x, y, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.plot(xvals, yinterp, '-x')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.show()
../../_images/numpy-interp-1_00_00.png

Интерполяция с периодическими координатами x:

>>> x = [-180, -170, -185, 185, -10, -5, 0, 365]
>>> xp = [190, -190, 350, -350]
>>> fp = [5, 10, 3, 4]
>>> np.interp(x, xp, fp, period=360)
array([7.5 , 5.  , 8.75, 6.25, 3.  , 3.25, 3.5 , 3.75])

Интерполяция с комплексными значениями:

>>> x = [1.5, 4.0]
>>> xp = [2,3,5]
>>> fp = [1.0j, 0, 2+3j]
>>> np.interp(x, xp, fp)
array([0.+1.j , 1.+1.5j])

© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/generated/numpy.interp.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API