Seite 1 von 1
Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Dienstag 21. Juli 2020, 21:25
von fox1203
Hallo, ich habe folgende Textdatei:
0.85; 100.0;
2516.0; 2516.0;
0.860; 0.879;
6.0; 0.8;
0.00 27.69 -0.00
20.00
0.50 28.25 0.50
20.53
1.00 28.74 1.00
20.81
1.50 29.20 1.50
20.98
2.00 29.64 2.00
21.07
und möchte nur die fett markierten Werte einlesen. Habe nun folgenden Code verwendet (mit numpy):
Code: Alles auswählen
y = np.loadtxt("test3.txt",
delimiter=" ",
skiprows=1,
usecols=(4))
Mit skiprows=1 bekomme ich jedoch nur die erste zeile weg, kennt wer einen weg wo ich die ersten 5 Zeilen weg bekomme und tatsächlich nur die fett markierten werte einlesen kann??
Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Dienstag 21. Juli 2020, 21:48
von __blackjack__
@fox1203: Ernsthaft? Wenn man mit dem Wert 1 *eine* Zeile überlesen kann, hast Du keine Idee mit welchem Wert man wohl 5 Zeilen überlesen kann‽

Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Dienstag 21. Juli 2020, 21:54
von fox1203
na dann liegt die fehlermeldung:
Traceback (most recent call last):
File "txt_output.py", line 9, in <module>
results = np.loadtxt ("test3.txt",
File "/usr/local/lib64/python3.8/site-packages/numpy/lib/npyio.py", line 1139, in loadtxt
for x in read_data(_loadtxt_chunksize):
File "/usr/local/lib64/python3.8/site-packages/numpy/lib/npyio.py", line 1067, in read_data
items = [conv(val) for (conv, val) in zip(converters, vals)]
File "/usr/local/lib64/python3.8/site-packages/numpy/lib/npyio.py", line 1067, in <listcomp>
items = [conv(val) for (conv, val) in zip(converters, vals)]
File "/usr/local/lib64/python3.8/site-packages/numpy/lib/npyio.py", line 763, in floatconv
return float(x)
ValueError: could not convert string to float: ''
nicht daran, dass ich bereits [4] als skiprows eingegeben habe,...
eine idee an was das liegen kann??
Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Dienstag 21. Juli 2020, 22:25
von __blackjack__
Ja, das liegt am falschen `delimiter`. Deine Werte sind nicht durch *ein* Leerzeichen getrennt und deshalb passiert beim zerlegen dann das hier:
Code: Alles auswählen
In [230]: " 0.00 27.69 -0.00 20.00".split(" ")
Out[230]:
['',
'',
'',
'',
'',
'0.00',
'',
'',
'',
'',
'',
'',
'27.69',
'',
'',
'',
'',
'',
'',
'-0.00',
'',
'',
'',
'',
'',
'',
'20.00']
Du willst da einfach nichts angeben.
Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Dienstag 21. Juli 2020, 22:43
von fox1203
Danke, funktioniert soweit mit skiprows und usecols, ohne den Rest.
Was noch nicht ganz klappt ist, dass mir die Werte in mehreren Zeilen aufgeteilt wird, sodass es beim erneuten schreiben in ein TXT wieder nicht in einer Zeile geschrieben wird, wie kann ich das verhindern?
Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Dienstag 21. Juli 2020, 22:46
von __blackjack__
@fox1203: Du musst es halt richtig machen. Also nicht den Fehler machen den hier keiner kennt, weil ausser Dir ja keiner weiss was Du da beim schreiben machst.

Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Dienstag 21. Juli 2020, 22:58
von fox1203
der code lautet:
Code: Alles auswählen
import numpy as np
results = np.loadtxt ("test3.txt",
skiprows = 5,
usecols = [3])
test = open ("test.txt", "w")
test.write (str(results))
print(results)
Die Daten im Test3.txt File sind untereinander angeordnet, beim Schreiben in test.txt werden diese in mehreren Zeilen aufgeteilt und haben am Anfang und am Ende ein [ bzw ]. Die eckigen Klammern müssen weg und die Daten in einer Zeile geschrieben werden.
Kannst du nun damit was anfangen, bzw. einen richtigen Weg nennen?
Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Dienstag 21. Juli 2020, 23:14
von __blackjack__
@fox1203: Numpy hat auch Funktionen zum Schreiben von Textdateien.
Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Dienstag 21. Juli 2020, 23:18
von fox1203
dieser abschnitt des codes wird in eine bestehenden file.write code eingefügt, sind also die messergebnisse, welche im anschluss an den zuvor geschriebenen eingabewerten in einer zeile hinzugefügt werden sollen, daher die oben beschriebene variante.
ist da eine möglichkeit die eckiegn klammern, sowie zeilenumbrüche wegzubekommen, oder siehst du da keine chanche?
Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Dienstag 21. Juli 2020, 23:53
von __blackjack__
@fox1203: Natürlich sehe ich da eine Chance. Ich schrob ja bereits das Numpy auch zum schreiben Funktionen hat. Und genau wie bei denen zum lesen kann man da statt eines Dateinamens auch ein Dateiobjekt übergeben.
Ansonsten kann man natürlich auch selbst nicht das gesamte Objekt einfach in eine Zeichenkette umwandeln sondern die Werte einzeln umwandeln und in die Datei schreiben. Zusammen mit einem Zeilenendezeichen pro Wert.
Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Mittwoch 22. Juli 2020, 20:52
von fox1203
thx, nach langem probieren hab ich zumindest geschafft, dass die werte analog zum eingelesenen txt file geschrieben werden, dh getrennt mit \n mit folgendem code:
jetzt stellt sich noch die Frage, wie man np.savetext dazu bringt, die Werte in einer Zeile mit delimiter "," zu schreiben. mit dem befehl newline="," bekomme ich zwar ein , als trennzeichen, jedoch auch ein leerzeichen UND die zeilenumbrüche sind auch wieder da?
bitte um hilfestellung danke
Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Mittwoch 22. Juli 2020, 21:21
von __blackjack__
@fox1203: Du willst als „delimiter“ ein Komma gibst das aber nicht als `delimiter` sondern als `newline` an‽

Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Mittwoch 22. Juli 2020, 21:26
von fox1203
weder das eine noch das andere war die lösung;
whatever ich habe es soeben geschafft, das script läuft nun!
Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Mittwoch 22. Juli 2020, 21:32
von fox1203
sag mal eine andere frage, da mein script ja nun eine iteration eines berechnugsmodul darstellt, wäre es interessant wie lange zB 100 iterationsläufe dauern, um ein gefühl zu bekommen wie lange 500tsd iterationen dauern werden. kennst du da eine möglichkeit, zB ein print am ende des script wie lange die laufzeit war?
Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Mittwoch 22. Juli 2020, 21:35
von Sirius3
Bei temp_data handelt es sich offensichtlich tatsächlich um Temperaturen und nicht um temptation wie ich zuerst gehofft hatte. Benutze keine Abkürzungen.
Du mußt den Zeilenvektor in einen Spaltenvektor umwandeln:
Code: Alles auswählen
np.savetxt("testx.txt", np.atleast_2d(temperatures), delimiter=",")
Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Donnerstag 23. Juli 2020, 05:34
von einfachTobi
Code: Alles auswählen
import time
start = time.perf_counter()
print("Sachen machen")
print(f"Laufzeit: {time.perf_counter() - start} s")
Ich weiß nicht genau, was du vor hast, aber vorsichtshalber schon mal der Tipp: Man iteriert (fast) nie über Numpy-Arrays. Wenn man das tut, macht man in der Regel etwas falsch.
Re: Numpy Skiprow --> Skip erste 5 Zeilen in TXT File
Verfasst: Dienstag 28. Juli 2020, 13:54
von fox1203
merci, macht genau das was ich will!