Seite 1 von 1

einlesen einer speziellen datei

Verfasst: Mittwoch 27. Dezember 2017, 11:56
von ch_neu
Hallo,

ich komme leider grad gar nicht weiter mit dem Einlesen einer Datei und wollte mal für eien elegante Lösung dafür bei euch nachfragen.

Habe sie mal hier angefügt sollte man die Datei brauchen.
https://drive.google.com/open?id=1TwxbX ... Bro2fcoAz7

In 4 Spalten sind verschiedene Messwerte gespeichert.

Wenn ich versuche die Datei mit

Code: Alles auswählen

messwerte = np.loadtxt(datafile, skiprows=2, usecols=[0,3],dtype=str)
einzulesen bekomme ich einen recht komischen Vektor in der Art:

Code: Alles auswählen

array([["b'930,000'", "b'10,794'"],
       ["b'930,010'", "b'2,717'"],
       ["b'930,020'", "b'11,334'"],
       ..., 
       ["b'999,980'", "b'25,289'"],
       ["b'999,990'", "b'-3,318'"],
       ["b'1000,000'", "b'12,085'"]], 
      dtype='<U11')
damit kann ich dann nicht wirklich was anfangen.

Auch habe ich bereits

Code: Alles auswählen

messwerte=np.genfromtxt(datafile,skip_header =2,delimiter='\t', dtype=str)
versucht. Funktioniert auch wunderbar, nur habe ich dann das Problem, dass ich die Strings nicht in eine float Zahl umwandeln kann. Dafür müsste ich die , mit . im array ersetzen, leider habe ich keine brauchbare und schöne Lösung (mit einer Schleife würde ich es schon schaffen, nur muss das doch besser gehen) dafür finden können bis jetzt.

Könnt ihr mir da bitte weiterhelfen?!

lg

Re: einlesen einer speziellen datei

Verfasst: Mittwoch 27. Dezember 2017, 12:58
von Sirius3
@ch_neu: dafür kennt loadtxt den converters-Parameter

Code: Alles auswählen

def tofloat(s):
    return float(s.replace(',', '.'))

messwerte = np.loadtxt(datafile, skiprows=2, usecols=[0,3], converters={0:tofloat, 3:tofloat})

Re: einlesen einer speziellen datei

Verfasst: Mittwoch 27. Dezember 2017, 14:41
von ch_neu
@Sirius3
Danke für die Hilfe. Wenn ich das so mache erhalte ich aber immer:

Code: Alles auswählen

  File "E:/....", line 36, in tofloat
    return float(s.replace(',', '.'))

TypeError: a bytes-like object is required, not 'str'

Re: einlesen einer speziellen datei

Verfasst: Mittwoch 27. Dezember 2017, 15:30
von snafu
Der Fehler entsteht in replace(). Wenn du dort s.replace(b',', b'.') reinschreibst, dann sollte es klappen.

Re: einlesen einer speziellen datei

Verfasst: Mittwoch 27. Dezember 2017, 15:44
von ch_neu
super. danke. :-)