Ich versuche, Text aus einer flachen Datei zu importieren und in float-Werte innerhalb einer einzigen Zeile zu konvertieren. Ich habe gesehen this post, die den gleichen Fehler hat, aber ich habe nicht gefunden, welche Zeichen in meiner Eingabedatei ungültig sind. Oder habe ich einen Syntaxfehler?Convert import string to float mit numpys loadtext
Import als Zeichenfolge ein Druck das Ergebnis:
data = np.loadtxt(file, delimiter='\t', dtype=str)
print(data[0:2])
...
[["b'Time'" "b'Percent'"]
["b'99'" "b'0.067'"]]
Versuch als Schwimmer zu importieren:
# Import data as floats and skip the first row: data_float
data_float = np.loadtxt(data, delimiter='\t', dtype=float, skiprows=1)
Es führt den folgenden Fehler:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
data_float = np.loadtxt(data, delimiter='\t', dtype=float, skiprows=1)
File "<stdin>", line 848, in loadtxt
items = [conv(val) for (conv, val) in zip(converters, vals)]
File "<stdin>", line 848, in <listcomp>
items = [conv(val) for (conv, val) in zip(converters, vals)]
ValueError: could not convert string to float: b'["b\'99\'" "b\'0.067\'"]'
By the way, Ich habe auch this post gesehen, was den b
Charakter erklärt, aber ich denke nicht, dass das t er Problem.
Ein weiterer Schritt zur Fehlerbehebung, wie durch die erste Antwort vorgeschlagen:
data = np.loadtxt(file, delimiter="\tb'", dtype=str)
Returns:
array(["b'Time\\tPercent'", "b'99\\t0.067'", "b'99\\t0.133'",
"b'99\\t0.067'", "b'99\\t0'", "b'99\\t0'", "b'0\\t0.5'",
"b'0\\t0.467'", "b'0\\t0.857'", "b'0\\t0.5'", "b'0\\t0.357'",
"b'0\\t0.533'", "b'5\\t0.467'", "b'5\\t0.467'", "b'5\\t0.125'",
"b'5\\t0.4'", "b'5\\t0.214'", "b'5\\t0.4'", "b'10\\t0.067'",
"b'10\\t0.067'", "b'10\\t0.333'", "b'10\\t0.333'", "b'10\\t0.133'",
"b'10\\t0.133'", "b'15\\t0.267'", "b'15\\t0.286'", "b'15\\t0.333'",
"b'15\\t0.214'", "b'15\\t0'", "b'15\\t0'", "b'20\\t0.267'",
"b'20\\t0.2'", "b'20\\t0.267'", "b'20\\t0.437'", "b'20\\t0.077'",
"b'20\\t0.067'", "b'25\\t0.133'", "b'25\\t0.267'", "b'25\\t0.412'",
"b'25\\t0'", "b'25\\t0.067'", "b'25\\t0.133'", "b'30\\t0'",
"b'30\\t0.071'", "b'30\\t0'", "b'30\\t0.067'", "b'30\\t0.067'",
"b'30\\t0.133'"],
dtype='<U16')
Das war mein Kommentar unten. Ich werde glücklich sein, es zu löschen. Aber könnten Sie erklären, warum zuerst? – Bobby
Ich löste es jetzt, Siehe meine Posted Response. Ich könnte auch die gesamte Frage löschen, da die Antwort trivial war, aber vielleicht hilft es jemandem. – Bobby
Löschen Sie die Frage: es ist off Thema m SO ------ das enge Pop-up. Diese Frage wurde durch ein Problem verursacht, das nicht mehr reproduziert werden kann oder ein einfacher Tippfehler. Während ähnliche Fragen hier zum Thema gehören könnten, wurde diese in einer Weise gelöst, die den zukünftigen Lesern wahrscheinlich nicht hilft. Dies kann oft vermieden werden, indem das kürzeste Programm identifiziert und genau untersucht wird, das zur Reproduktion des Problems vor der Veröffentlichung erforderlich ist. – Merlin