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