numpy.interp(x, xp, fp, left=None, right=None, period=None) [source]

Interpolación lineal unidimensional.

Devuelve el interpolante lineal unidimensional por partes a una función con puntos de datos discretos dados (xp, fp), evaluado en x.

Parámetros
xarray_like

Las coordenadas x en las que evaluar los valores interpolados.

xp1-D sequence of floats

Las coordenadas x de los puntos de datos deben aumentar si el argumento period no se especifica. De lo contrario, xp se ordena internamente después de normalizar los límites periódicos con xp = xp % period.

fp1-D sequence of float or complex

Las coordenadas y de los puntos de datos, de la misma longitud que xp.

leftoptional float or complex corresponding to fp

Valor para devolver x < xp[0], el valor predeterminado es fp[0].

rightoptional float or complex corresponding to fp

Valor para devolver x > xp[-1], el valor predeterminado es fp[-1].

periodNone or float, optional

Un período para las coordenadas x. Este parámetro permite la interpolación adecuada de coordenadas x angulares. Parámetros left y right son ignorados si period está especificado.

Nuevo en la versión 1.10.0.

Devoluciones
yfloat or complex (corresponding to fp) or ndarray

Los valores interpolados, la misma forma que x.

Eleva
ValueError

Si xp y fp tienen diferente longitud si xp o fp no son secuencias 1-D Si period == 0

Ver también

scipy.interpolate

Notas

Se espera que la secuencia de coordenadas x aumente, pero esto no se aplica explícitamente. Sin embargo, si la secuencia xp no aumenta, los resultados de la interpolación no tienen sentido.

Tenga en cuenta que, dado que NaN no se puede ordenar, xp tampoco puede contener NaN.

Un simple cheque para xp ser estrictamente creciente es:

np.all(np.diff(xp) > 0)

Ejemplos de

>>> 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

Grafique un interpolante para la función seno:

>>> 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

Interpolación con coordenadas x periódicas:

>>> 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])

Interpolación compleja:

>>> 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])