Numpy loadtxt: ValueError: Falsche Anzahl von Spalten
Dass die Datei TEST.txt die wie folgt strukturiert sind:
a 45
b 45 55
c 66
Wenn ich versuche ihn zu öffnen:
import numpy as np
a= np.loadtxt(r'TEST.txt',delimiter='\t',dtype=str)
Hab ich die folgende Fehlermeldung:
ValueError: Falsche Anzahl von Spalten in Zeile 2
Es ist deutlich aufgrund der Tatsache, dass die zweite Zeile hat drei Spalten statt zwei, aber ich kann nicht finden, eine Antwort auf mein problem mit der Dokumentation.
Ist es trotzdem kann ich es beheben halten alle Daten in ein array?
In Matlab kann ich etwas tun wie:
a=textscan(fopen('TEST.txt'),'%s%s%s');
Etwas ähnliches in Python wäre apreciated.
was sollte geschehen, um die extra?
wie wollen Sie das speichern? können Sie schreiben die erwartete Ausgabe?
Ich denke, was Sie wollen, ist einfach nicht möglich mit loadtxt, Sie könnte es tun, mit python-Listen
Oder funktionell
wie wollen Sie das speichern? können Sie schreiben die erwartete Ausgabe?
Ich denke, was Sie wollen, ist einfach nicht möglich mit loadtxt, Sie könnte es tun, mit python-Listen
Oder funktionell
arr = list(map(str.split, f))
die Ihnen ['a', '45'], ['b', '45', '55'], ['c', '66']]
with open('TEST.txt') as f:arr = list(map(str.split, f))
InformationsquelleAutor G M | 2016-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
np.genfromtxt
. Es behandelt fehlende Werte;loadtxt
nicht. Vergleichen Sie Ihre docs.Fehlende Werte können tückisch sein, wenn Sie das Trennzeichen ist Leerzeichen, sondern mit Tabulatoren sollte es ok sein. Wenn es noch Probleme gibt, testen Sie es mit einem
,
Trennzeichen.oops - Sie müssen noch die zusätzlichen Trennzeichen
zB.
Beide
loadtxt
undgenfromtxt
akzeptieren iterierbar liefert, dass die txt zeilenweise. So eine einfache Sache ist zureadlines
zwicken die Zeilen mit fehlenden Werten und Trennzeichen aus, und übergeben Sie die Liste der Zeilen für den Lader. Oder Sie können schreiben, dieser einen 'filter' oder generator. Dieser Ansatz ist beschrieben worden in eine Reihe von früheren Fragen.Ich bin mit Python ist3, so dass die byte-strings sind, sind markiert mit " b " (für baby und mich).
For strings, das ist übertrieben; aber
genfromtxt
macht es leicht zu konstruieren ein strukturiertes array mit unterschiedlichen dtypes für jede Spalte. Beachten Sie, dass array 1d, mit benannten Bereichen - nicht numerierte Spalten.pad den Zeilen konnte ich eine Funktion definieren, wie:
und verwenden Sie es als:
InformationsquelleAutor hpaulj
wenn Sie variable Anzahl von Spalten, können Sie nicht definieren, eine richtige
np.array
Form.Wenn Sie möchten, bewahren Sie Sie in einem
np.array
versuchen:nun
a
istarray(['a 45', 'b 45 55', 'c 66'])
.Aber in diesem Fall ist es besser eine Liste:
nun
a
ist eine Liste['a 45', 'b 45 55', 'c 66']
InformationsquelleAutor Francesco Nazzaro