Seite 1 von 1

Zeitintervalle erstellen

Verfasst: Samstag 7. Dezember 2019, 10:48
von gh0stsh3ll
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?

Re: Zeitintervalle erstellen

Verfasst: Samstag 7. Dezember 2019, 10:49
von nezzcarth
Das geht etwa mit Schleifen oder List Comprehensions. Was hast du denn schon versucht?

Re: Zeitintervalle erstellen

Verfasst: Samstag 7. Dezember 2019, 11:17
von gh0stsh3ll
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])]

Re: Zeitintervalle erstellen

Verfasst: Samstag 7. Dezember 2019, 11:49
von kbr
Also ich hätt irgendwie sowas gemacht:

Code: Alles auswählen

n = 10
list(zip(range(n), range(1, n+1)))

Re: Zeitintervalle erstellen

Verfasst: Samstag 7. Dezember 2019, 11:51
von gh0stsh3ll
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]]

Re: Zeitintervalle erstellen

Verfasst: Samstag 7. Dezember 2019, 13:55
von __blackjack__
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)]