Spec-Zone.ru › NumPy 1.20

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

См. также

scipy.interpolate

Примечания

Последовательность координат 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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.interp.html

Spec-Zone.ru

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