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?
Zeitintervalle erstellen
-
- User
- Beiträge: 5
- Registriert: Sonntag 17. November 2019, 17:45
also ich hätt irgendwie sowas gemacht:
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])]
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]]))
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])]
Also ich hätt irgendwie sowas gemacht:
Code: Alles auswählen
n = 10
list(zip(range(n), range(1, n+1)))
-
- User
- Beiträge: 5
- Registriert: Sonntag 17. November 2019, 17:45
Ok habs selber jetzt nach dem hinweis gefunden:
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]]
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)
[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]]
- __blackjack__
- User
- Beiträge: 14051
- 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)]
“Vir, intelligence has nothing to do with politics!” — Londo Mollari