Spec-Zone.ru › NumPy 1.21

numpy.interp

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

Линейная интерполяция одного измерения для монотонно возрастающих точек выборки.

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

Параметры
xarray_like

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

xp1-D последовательность чисел с плавающей точкой

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

fp1-D последовательность чисел с плавающей или комплексной точкой

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

leftнеобязательное число с плавающей или комплексной точкой соответствующее fp

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

rightнеобязательное число с плавающей или комплексной точкой соответствующее fp

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

periodNone или число с плавающей точкой, необязательно

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

Добавлена в версии 1.10.0.

Возвращает
yчисло с плавающей или комплексной точкой (соответствующее fp) или массив

Интерполированные значения, имеющие ту же форму, что и x.

Возбуждает
ValueError

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

Предупреждение

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

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

Простой проверкой на xp является строгое возрастание:

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

См. также

scipy.interpolate

Примеры

>>> 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–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.interp.html

Spec-Zone.ru

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