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)
См. также
Примеры
>>> 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–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.interp.html