Dateneinlesen mit loadtxt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
MaSchle.inc
User
Beiträge: 2
Registriert: Mittwoch 18. Februar 2015, 22:11
Wohnort: /home/martin

Hallo Zusammen.
So jetzt habe ich mich angemeldet. Nach langem Rumsuchen im Web. Ich habe folgendes Script gebastelt.

Code: Alles auswählen

# -*- coding: utf-8 -*-
import matplotlib.pylab as plt
import numpy as  np 
data=np.loadtxt("det.tab",skiprows=1 ,delimiter=' ')
x=data[:,0]
y=data[:,1]

plot(x,y)
plt.show()
und bekomme diese Fehlermeldung mit der ich beim besten Willen nix anfangen kann.
Die einzulesende ascii-Datei hat vier Spalten und ist mit Leerzeichen getrennt, kein header.

Traceback (most recent call last):
File "Dateladen.py", line 4, in <module>
data=np.loadtxt("det.tab",skiprows=1 ,delimiter=' ')
File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 848, in loadtxt
items = [conv(val) for (conv, val) in zip(converters, vals)]
ValueError: could not convert string to float:

Was mache ich da falsch :K
Danke und Gruss Martin
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

MaSchle.inc hat geschrieben:ValueError: could not convert string to float:
Kommt nach dem ": " nicht mehr?
Generell bedeutet der Fehler das du nicht nur Zahlen in deinen Input Daten hast.
Wenn nichts mehr nach dem ": " kommt, hast du vermutlich zwischen den Zahlen einmal 2x Leerzeichen oder mehr als Trennzeichen
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@MaSchle.inc: Wenn Du explizit einen Delimiter angibst, dann ist jedes Leerzeichen ein Trennzeichen. Also auch doppelte Leerzeichen, Leerzeichen am Zeilenende oder -anfang. Laß den delimiter einfach weg, defaultmäßig ist dann jeder Leerraum Trennzeichen und Leerraum am Anfang und Ende einer Zeile wird ignoriert.
Benutzeravatar
MaSchle.inc
User
Beiträge: 2
Registriert: Mittwoch 18. Februar 2015, 22:11
Wohnort: /home/martin

Danke Sirius3 und Sr4l
Das script funktoniert.
Das Problem lag an den einzulesenden Daten. Die Spalten begannen mit einem Leerzeichen. Zwischen den Spalten
waren mehere Leerzeichen. Das heist fuer mich auf strickte Formatierung der Datenreihen achten, da ist gnuplot nicht
ganz so pingelig.
Gruss Martin
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@MaSchle.inc: einfach "delimiter" weglassen ist die Lösung.
BlackJack

Man könnte sich auch zwei Zeilen sparen wenn man das `unpack`-Argument angibt:

Code: Alles auswählen

x, y = np.loadtxt('det.tab', skiprows=1, unpack=True)
Antworten