2016-11-01 4 views
0

Ich versuche, eine Kurve mit Spline im Scipy-Modul zu glätten. Ich verwende Python 2.7 auf einem 64-Bit-Windows-10-Rechner. Ich bin ziemlich sicher, dass ich den Code richtig geschrieben habe, aber ich bekomme ein numpy Array voller Nullen für meine Y-Achse. Hier ist der Code:Scipy Spline produziert ein Array voller Nullen

#Smooth Chart Curves 
def interp(self, x, y):   
    xx = np.array(x) 
    yy = np.array(y)  
    xnew = np.linspace(xx.min(), xx.max(), 300) 
    ynew = spline(xx, yy, xnew) 
    xnew = np.array(xnew).tolist() 
    ynew = np.array(ynew).tolist() 
    return xnew, ynew 

I, indem man eine Liste von sechs Zahlen beginnen beide x und y Variablen. Die xnew Variable funktioniert gut, aber ynew = spline(xx, yy, xnew) erstellt ein numpy Array, das mit 300 Nullen gefüllt ist.

Ich bin vorbei folgend als x und y:

x = [2800.0, 2002.0, 1234.0, 800.0, 450.0, 0] 
y = [5.0, 9.1, 15.3, 20.9, 25.4, 27.2] 

Antwort

1

Ihre x-Achse muss monoton zu steigen für die Interpolation arbeiten. Vielleicht ist es ein Tippfehler, aber y sieht für mich viel mehr wie die x-Achse aus.

Wenn es wirklich nicht ist:

xx = np.array(x) 
sx = np.argsort(xx) 
xx = xx[sx] 
yy = np.array(y) 
yy = yy[sx] 

wird sortieren beide x und y so dass x in aufsteigender Reihenfolge sortiert ist.

+0

Die Achsen sind korrekt. Ich werde einfach alles umkehren und es sollte funktionieren. Vielen Dank. –

Verwandte Themen