Il SciPy documentation spiega che interp1d
s' kind
argomento può assumere i valori ‘linear’
, ‘nearest’
, ‘zero’
, ‘slinear’
, ‘quadratic’
, ‘cubic’
. Gli ultimi tre sono ordini spline e 'linear'
è auto-esplicativo. Cosa fanno 'nearest'
e 'zero'
?Cosa significano i diversi valori dell'argomento tipo in scipy.interpolate.interp1d?
6
A
risposta
11
nearest
"scatta" al punto dati più vicino.zero
è una spline di ordine zero. Il valore in qualsiasi punto è l'ultimo valore non elaborato visualizzato.linear
esegue l'interpolazione lineare eslinear
utilizza una prima spline di ordine . Usano codice diverso e can produce similar but subtly different results.quadratic
utilizza l'interpolazione spline di secondo ordine.cubic
utilizza l'interpolazione di spline di terzo ordine.
Si noti che il parametro k
può anche accettare un numero intero che specifica l'ordine di interpolazione spline.
import numpy as np
import matplotlib.pyplot as plt
import scipy.interpolate as interpolate
np.random.seed(6)
kinds = ('nearest', 'zero', 'linear', 'slinear', 'quadratic', 'cubic')
N = 10
x = np.linspace(0, 1, N)
y = np.random.randint(10, size=(N,))
new_x = np.linspace(0, 1, 28)
fig, axs = plt.subplots(nrows=len(kinds)+1, sharex=True)
axs[0].plot(x, y, 'bo-')
axs[0].set_title('raw')
for ax, kind in zip(axs[1:], kinds):
new_y = interpolate.interp1d(x, y, kind=kind)(new_x)
ax.plot(new_x, new_y, 'ro-')
ax.set_title(kind)
plt.show()
0
'vicina' restituisce punto di dati da X più vicino all'argomento, o interpolates function y=f(x) at the point x using the data point nearest to x
'zero' direi è equivalente a troncamento di argomentazione e quindi utilizzando punto dati più vicino a zero
lineare e slinear non sempre producono lo stesso risultato in alcuni casi patologici, vedere http://gist.github.com/stringfellow/8ae4d3f25ca525e75bb79c01fbda4a24 –
@StevePike: E 'molto interessante, ma sembra che potrebbe essere un problema specifico per Panda, non scipy. Vale a dire, quando adattare i dati al mio codice sopra (senza Pandas), 'interpolate.interp1d' sembra produrre gli stessi risultati quando' kind = 'linear'' o 'kind =' slinear''. – unutbu
aha .. buona cattura! Ho pensato che i panda lo passassero attraverso ... sciocco! Abbastanza confuso .. –