Seite 1 von 1

Dateneinlesen mit loadtxt

Verfasst: Mittwoch 18. Februar 2015, 22:34
von MaSchle.inc
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

Re: Dateneinlesen mit loadtxt

Verfasst: Mittwoch 18. Februar 2015, 22:58
von Sr4l
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

Re: Dateneinlesen mit loadtxt

Verfasst: Mittwoch 18. Februar 2015, 23:01
von Sirius3
@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.

Re: Dateneinlesen mit loadtxt

Verfasst: Donnerstag 19. Februar 2015, 09:45
von MaSchle.inc
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

Re: Dateneinlesen mit loadtxt

Verfasst: Donnerstag 19. Februar 2015, 10:48
von Sirius3
@MaSchle.inc: einfach "delimiter" weglassen ist die Lösung.

Re: Dateneinlesen mit loadtxt

Verfasst: Freitag 20. Februar 2015, 09:54
von 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)