Wie berechne ich die Steigung in numpy

Wenn ich ein array mit 50 Elementen, wie würde ich berechnen 3 Zeit Steigung und 5 Zeit Steigung?
Die docs nicht hinzufügen viel.....

>>> from scipy import stats
>>> import numpy as np
>>> x = np.random.random(10)
>>> y = np.random.random(10)
>>> slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)

Würde das funktionieren?

def slope(x, n): 
   if i<len(x)-n: 
        slope = stats.linregress(x[i:i+n],y[i:i+n])[0]
        return slope 

aber das würde den arrays die gleiche Länge

@joe:::

xx = [2.0 ,4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
x  = np.asarray(xx, np.float)
s  = np.diff(x[::3])/3

window  = [1, 0, 0, 0,  -1]
window2 = [1, 0,  -1]
slope   = np.convolve(x, window, mode='same') / (len(window) - 1)
slope2  = np.convolve(x, window2, mode='same') / (len(window2) - 1)

print x
print s

print slope
print slope2

Ergebnisse.....

[  2.   4.   6.   8.  10.  12.  14.  16.  18.  20.  22.  24.  26.  28.  30.]
[ 2.  2.  2.  2.]
[ 1.5  2.   2.   2.   2.   2.   2.   2.   2.   2.   2.   2.   2.  -6.  -6.5]
[  2.   2.   2.   2.   2.   2.   2.   2.   2.   2.   2.   2.   2.   2. -14.]

Den Hang und slope2 sind, was Im nach mit Ausnahme der -6, -6.5 und -14 sind nicht die Ergebnisse, die ich Suche.

dieser gearbeitet.......

window    = [1, 0, 0, -1]
slope     = np.convolve(xx, window, mode='valid') / float(len(window) - 1)
padlength = len(window) -1
slope     = np.hstack([np.ones(padlength), slope])
print slope
Läuft der linearen regression auf den gesamten Satz von 50 Beobachtungen geben Ihnen eine Steigung und einen Achsenabschnitt. Könntest du erklären, was genau du meinst mit einem "N-Periode Hang"?
wenn Serie 1,2 ...........50, ich möchte Steigung von 46,47,48,49,50, und die Steigung der 48,49,50. Wie ein array. so, alle Elemente haben die entsprechenden Pisten

InformationsquelleAutor Merlin | 2011-09-08

Schreibe einen Kommentar