Spec-Zone.ru › NumPy 2.0

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-мерными последовательностями. Если 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–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.interp.html

Spec-Zone.ru

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