2016-10-17 4 views
2

Guten Abend, StackOverflow. In letzter Zeit habe ich mit einem Python-Programm gerungen, das ich so kurz wie möglich skizzieren werde.Python-Listen nach Wert statt nach Index zuschneiden

Im Wesentlichen plottet mein Programm (und passt dann eine Funktion zu) Grafiken. Betrachten this graph. Die Grafik zeichnet sich gut, aber ich möchte es ein wenig mehr als das tun: Da die Daten periodisch über ein Intervall OrbitalPeriod (1.76358757) sind, möchte ich es mit unserer ersten x starten Wert und dann iterativ alle Punkte OrbitalPeriod weg von ihm zu zeichnen, und dann genau dasselbe über die nächste Region der Länge tun OrbitalPeriod.

Ich weiß, dass es einen Weg gibt Listen in Python der Form

croppedList = List[a:b] 

wo ein und b sind die Indizes der ersten und letzten Elemente zu schneiden Sie möchten, dass in einschließen die neue Liste jeweils. Ich habe jedoch keine Ahnung, wie die Indizes für jeden der Werte aussehen werden oder wie viele Werte zwischen den einzelnen Intervallen liegen.

Was ich in Pseudo-Code tun möchte, sieht in etwa so aus.

croppedList = fullList auf der Domain [a + (N * OrbitalPeriod), a + (N + 1 * OrbitalPeriod)]

wo a ist der x-Wert des ersten aussagekräftigen Datenpunktes.

Wenn Sie eine Problemumgehung für diese oder eine zuschneidende Methode haben, die Werte anstelle von Indizes als Argumente akzeptiert, lassen Sie es mich wissen. Vielen Dank!

+0

Versuchen Sie, eine Funktion zu schreiben, die die Indizes der Listenelemente zurück, die nahe sind (* genug *) zu den Intervallen. Sie können über die Liste iterieren und jedes Element mit dem Wert des ersten Intervalls vergleichen, wenn Sie feststellen, dass es den Index speichert, dann das Intervall erhöhen und die Listenelemente weiter überprüfen. [enumerate] (https://docs.python.org/3/library/functions.html#enumerate) wird wahrscheinlich helfen. – wwii

Antwort

0

Wenn Sie mit numpy arbeiten, können Sie es in den Klammern verwenden

m = x 
M = x + OrbitalPeriod 
croppedList = List[m <= List] 
croppedList = croppedList[croppedList < M] 
Verwandte Themen