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