Zeitintervalle erstellen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
gh0stsh3ll
User
Beiträge: 5
Registriert: Sonntag 17. November 2019, 17:45

Hey,
ich hab mich gefragt, ob man folgendes problem auch elegant lösen könnte:

ich hab eine startzeit und endzeit, eg. 0 min und 10 min.
nun möchte ich zeitintervalle in dieser form erstellen: [0,1] [1,2][2,3]...[9,10]
jemand ne idee wie man das elegant lösen kann?
nezzcarth
User
Beiträge: 1799
Registriert: Samstag 16. April 2011, 12:47

Das geht etwa mit Schleifen oder List Comprehensions. Was hast du denn schon versucht?
gh0stsh3ll
User
Beiträge: 5
Registriert: Sonntag 17. November 2019, 17:45

also ich hätt irgendwie sowas gemacht:

Code: Alles auswählen

 x = np.arange(tref[0], tref[-1], 10)
    x = np.split(x, len(x)/2)
    x = list(x)
    for counter  in range(len(x)):
        x.append(np.array([x[counter][1], x[counter+1][0]]))
aber 1) finde ich, ist das alles andere als elegant, gibt es dazu keine spezielle funktion?
und 2) ist das ergebnis noch sehr bescheiden. sortiert bekomme ich es auch nicht :(

[array([ 0.33333333, 10.33333333]), array([20.33333333, 30.33333333]), array([40.33333333, 50.33333333]), array([60.33333333, 70.33333333]), array([80.33333333, 90.33333333]), array([100.33333333, 110.33333333]), array([10.33333333, 20.33333333]), array([30.33333333, 40.33333333]), array([50.33333333, 60.33333333]), array([70.33333333, 80.33333333]), array([ 90.33333333, 100.33333333]), array([110.33333333, 10.33333333])]
Benutzeravatar
kbr
User
Beiträge: 1510
Registriert: Mittwoch 15. Oktober 2008, 09:27

Also ich hätt irgendwie sowas gemacht:

Code: Alles auswählen

n = 10
list(zip(range(n), range(1, n+1)))
gh0stsh3ll
User
Beiträge: 5
Registriert: Sonntag 17. November 2019, 17:45

Ok habs selber jetzt nach dem hinweis gefunden:

Code: Alles auswählen

 step = 10
    x_list = [[x, x+step] for x in np.arange(tref[0], tref[-1], step) if x < tref[-1]]
    print(x_list)
was mir das ausgibt:
[0.3333333333333333, 10.333333333333334], [10.333333333333334, 20.333333333333336], [20.333333333333332, 30.333333333333332], [30.333333333333332, 40.33333333333333], [40.333333333333336, 50.333333333333336], [50.333333333333336, 60.333333333333336], [60.333333333333336, 70.33333333333334], [70.33333333333333, 80.33333333333333], [80.33333333333333, 90.33333333333333], [90.33333333333333, 100.33333333333333], [100.33333333333333, 110.33333333333333], [110.33333333333333, 120.33333333333333]]
Benutzeravatar
__blackjack__
User
Beiträge: 14336
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich würde für so etwas `more_itertools.windowed()` verwenden:

Code: Alles auswählen

In [20]: list(more_itertools.windowed(range(0, 11), 2))                         
Out[20]: 
[(0, 1),
 (1, 2),
 (2, 3),
 (3, 4),
 (4, 5),
 (5, 6),
 (6, 7),
 (7, 8),
 (8, 9),
 (9, 10)]
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Antworten