Spec-Zone.ru › NumPy 1.19

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.19/reference/generated/numpy.interp.html

Spec-Zone.ru

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