Hallo!
Ich stehe vor folgendem Problem: Ich habe Text(.dat) Dateien, die eine Reihe von Daten enthalten. Diese Daten sehen in etwa so aus:
#timestamp counter frequency [Hz] energy [J]
1505923164.480557 1603 +0.0e+00 +7.2396e-03
1505923164.581423 1604 +1.0e+01 +9.9698e-03
1505923164.682232 1605 +1.0e+01 +7.0931e-03
Die Files sind einige tausend Zeilen lang. Allerdings sind zwischen verwertbaren Daten auch solche, die ich nicht brauche. Daher möchte ich nur Zeilen zwischen bestimmten Zeitstempel einlesen, über diese mitteln und das ganze als Wert zu einer Liste hinzufügen. Also beispielsweise:
Alle "Energy" Werte zwischen Zeitstempeln 1505923164 und 1505923165 einlesen, den Durchschnitt bilden, als erstes Objekt zur Liste L hinzufügen.
Dann alle Werte zwischen Zeitstempeln 1505923168 und 15059231649, mitteln und als zweiten Eintrag zur Liste hinzufügen.
Ich finde zwar im Internet einiges, wie man bestimmte Reihen nach ihrer Nummer einlesen kann, aber finde nichts, und habe auch selbst keine Idee, wie ich bestimmte Zeilen nach ihrem ersten Eintrag einlesen kann....und bei einem mehrere tausend Zeilen langen File und 100 "Bereichen", die ich einlesen möchte, würde das händisch extrem lange dauern.
Hat jemand hier vielleicht einen Tip? Gibt es eine Funktion die sowas kann?
lieben Dank schonmal
Bestimmte Zeilen einer textdatei lesen
Lies die Datei komplett ein und filtere die eingelesenen Arrays. Ein paar tausend Zeilen geht in Sekundenbruchteilen, erst ab ein paar Millionen Zeilen lohnt sich sowas zu optimieren. Das Einlesen würde ich mit numpy.loadtxt oder mit panda machen. Das Filtern oder Suchen würde ich mit Numpy machen.
Darauf bin ich auch gestoßen, @__deets__, aber ich verstehe das Beispiel nicht wirklich. Die Bedingung scheint dort zu sein: durch 3 teilbar. Aber ich verstehe die Syntax nicht. (Ich bin blutiger Anfänger, aber das ist sicher leicht zu merken ).
Na du musst natürlich deine Bedingung formulieren. Also deine beiden Zeiträume prüfen.
Code: Alles auswählen
x = np.random.randn(20, 3)
( x > .7) & (x < .8)| (x > .2) & (x < .3)