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)
См. также
Примеры
>>> 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()
Интерполяция с периодическими координатами 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