2016-03-30 12 views
-1

Ich versuche, die zentrale Idee hinter diesem Problem zu finden:Maximale Wachstumsperiode in der Zeitreihe

Ich bin die folgende Eingabe in Koordinaten x, y:

0,2 3,0 4,5 7,8 8,6 9,5 13,6 15,9 17,10 21,8 
1,3 3,4 5,9 7,5 10,2 11,4 20,10 
0,0 6,6 12,3 19,6 

Grafisch den folgenden entsprechen: Graph

Mit Python muss ich das maximale Wachstumsintervall aller n Funktionen finden, die mit der Stdin übergeben werden.

Bisher konnte ich die folgende Ausgabe erhalten:

[['0', '2', '-'], ['3', '0', '+'], ['4', '5'], ['7', '8', '-'], ['8', '6'], ['9', '5', '+'], ['13', '6'], ['15', '9'], ['17', '10', '-'], ['21', '8']] 
[['1', '3', '+'], ['3', '4'], ['5', '9', '-'], ['7', '5'], ['10', '2', '+'], ['11', '4'], ['20', '10']] 
[['0', '0', '+'], ['6', '6', '-'], ['12', '3', '+'], ['19', '6']] 

, die den Abschnitt, wo die Funktion wachsen.

Aber jetzt habe ich große Schwierigkeiten habe zu verstehen, wie den nächsten Schritt zu tun, das ist im Grunde die Funktionen zusammen, um einen Vergleich das maximale Wachstumsintervall zu erhalten.

Jeder Vorschlag wird geschätzt!

Antwort

2

könnten Sie numpy verwenden.

Import numpy und erstellen Sie die Datenpunkte in ein Array machen.

In [1]: import numpy as np 

In [2]: a = np.array([(0,2), (3,0), (4,5), (7,8), (8,6), (9,5), (13,6), (15,9), (17,10), (21,8)]) 

In [3]: a 
Out[3]: 
array([[ 0, 2], 
     [ 3, 0], 
     [ 4, 5], 
     [ 7, 8], 
     [ 8, 6], 
     [ 9, 5], 
     [13, 6], 
     [15, 9], 
     [17, 10], 
     [21, 8]]) 

Finden Sie den Unterschied zwischen den sequentiellen Punkten in x und y;

In [4]: diff = a[1:] - a[:-1] 

In [5]: diff 
Out[5]: 
array([[ 3, -2], 
     [ 1, 5], 
     [ 3, 3], 
     [ 1, -2], 
     [ 1, -1], 
     [ 4, 1], 
     [ 2, 3], 
     [ 2, 1], 
     [ 4, -2]]) 

Trennen und teilen, um die Steigung zu erstellen;

In [6]: dx, dy = np.hsplit(diff, 2) 

In [7]: slope = dy/dx 

In [8]: slope 
Out[8]: 
array([[-0.66666667], 
     [ 5.  ], 
     [ 1.  ], 
     [-2.  ], 
     [-1.  ], 
     [ 0.25  ], 
     [ 1.5  ], 
     [ 0.5  ], 
     [-0.5  ]]) 

Wie man sehen kann, ist die maximale Steigung slope[1], die 5 entspricht dies dem zweiten Element des Hanges Array ist, so dass dies auftritt, zwischen dem zweiten und dem dritten Element von A;

In [8]: a[1:3] 
Out[8]: 
array([[3, 0], 
     [4, 5]])