Seite 1 von 1

Spalten in Form von arrays aus Textdatei extrahieren

Verfasst: Sonntag 16. Dezember 2018, 18:43
von Lennart
Hallo,

ich habe eine Textdatei mit 4 Spalten, in denen Werte für physikalische Größen stehen. Ich möchte die Werte in den Spalten in Funktionen einsetzen, oder die eine Spalte mit der anderen multiplizieren etc.

Zu diesem Zweck hatte ich mir überlegt, die Spalten in Form von arrays in Python zu überführen und dort alle Berechnungen durchzuführen.

Mein Code sieht wie folgt aus:

Code: Alles auswählen

import numpy as np
data = np.genfromtxt(r"C:\Users\User\Desktop\praktikum\Daten\CV\X-CV-58.txt", delimiter = " ") #AppliedPotential, time, WE1current, WE1potential = data.T #the data is written into 4 arrays: applied potential, time, WE1-Current and WE1-Potential
ApplPotential, time, WE1current, WE1potential = data.T 
Und der Fehlercode:

Code: Alles auswählen

%run "C:\Users\User\Desktop\praktikum\Daten\CV\test1.py"

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
C:\Users\User\Desktop\praktikum\Daten\CV\test1.py in <module>()
     45 #     print(text)
     46 
---> 47 data = np.genfromtxt(r"C:\Users\User\Desktop\praktikum\Daten\CV\X-CV-58.txt", delimiter = " ") #AppliedPotential, time, WE1current, WE1potential = data.T #the data is written into 4 arrays: applied potential, time, WE1-Current and WE1-Potential
     48 ApplPotential, time, WE1current, WE1potential = data.T
     49 
C:\Users\User\AppData\Local\Enthought\Canopy\edm\envs\User\lib\site-packages\numpy\lib\npyio.py in genfromtxt(fname, dtype, comments, delimiter, skip_header, skip_footer, converters, missing_values, filling_values, usecols, names, excludelist, deletechars, replace_space, autostrip, case_sensitive, defaultfmt, unpack, usemask, loose, invalid_raise, max_rows, encoding)
   2029             # Raise an exception ?
   2030             if invalid_raise:
-> 2031                 raise ValueError(errmsg)
   2032             # Issue a warning ?
   2033             else:
ValueError: Some errors were detected !
    Line #2 (got 1 columns instead of 6)
    Line #3 (got 1 columns instead of 6)
    .
    .
    .
Was muss ich denn anders machen?

Re: Spalten in Form von arrays aus Textdatei extrahieren

Verfasst: Sonntag 16. Dezember 2018, 19:19
von Sirius3
@Lennart: Deine Datei sieht anders aus, als Du es genfromtxt sagst. Scheinbar willst Du 4 Spalten hast aber 6 oder 1. Wie sieht denn die Datei aus?

Re: Spalten in Form von arrays aus Textdatei extrahieren

Verfasst: Sonntag 16. Dezember 2018, 19:27
von Lennart
Habe einen Teil des Problems gelöst: Und zwar habe ich Spalten, die durch Leerzeichen getrennt sind. Habe statt delimeter = "", delimeter ="()". Somit bekomme ich keine Fehlermeldung, aber sonst auch nicht anderes. Sehe auch kein Array :?

So sehen meine Daten aus, betseht eigentlich aus über 2000 Zeilen.

https://picload.org/view/dccrdagd/unbenannt.png.html

Re: Spalten in Form von arrays aus Textdatei extrahieren

Verfasst: Sonntag 16. Dezember 2018, 19:28
von Sirius3
Deine Spalten sind durch Tabs `\t` getrennt, außerdem hast Du eine Header-Zeile.

Re: Spalten in Form von arrays aus Textdatei extrahieren

Verfasst: Sonntag 16. Dezember 2018, 19:46
von Lennart
Habe es jetzt geändert:

Code: Alles auswählen

data = np.genfromtxt(r"C:\Users\User\Desktop\praktikum\Daten\CV\X-CV-58.txt", delimiter = "\t", skip_header = 1) 
a,b,c,d = data.T
print(a)
print(b)
print(c)
print(d)
Und die Fehlermeldung ist:

Code: Alles auswählen

ValueError                                Traceback (most recent call last)
C:\Users\User\Desktop\praktikum\Daten\CV\test1.py in <module>()
     46 
     47 data = np.genfromtxt(r"C:\Users\User\Desktop\praktikum\Daten\CV\X-CV-58.txt", delimiter = "\t", skip_header = 1) 
---> 48 a,b,c,d = data.T
     49 print(a)
     50 print(b)
ValueError: too many values to unpack (expected 4) 
sind die über 2000 Werte zu viel? Ich dachte Python müsste das packen :?

Re: Spalten in Form von arrays aus Textdatei extrahieren

Verfasst: Sonntag 16. Dezember 2018, 20:04
von Sirius3
Dann scheint es doch irgendwo mehr Spalten zu geben, eventuell nur leere.

Re: Spalten in Form von arrays aus Textdatei extrahieren

Verfasst: Sonntag 16. Dezember 2018, 20:07
von __blackjack__
@Lennart: Du versuchst 6 Spalten auf 4 Namen zu verteilen. Das geht logischerweise nicht.

Re: Spalten in Form von arrays aus Textdatei extrahieren

Verfasst: Montag 17. Dezember 2018, 07:22
von ThomasL
Denn wie man am Header erkennen kann, gibt es rechts noch die Spalten Q+ und Q-, die aber keine Daten enthalten.

Re: Spalten in Form von arrays aus Textdatei extrahieren

Verfasst: Montag 17. Dezember 2018, 15:21
von Lennart
Vielen Dank für die Antworten!
Weil die Spalten leer waren, dachte ich, dass sie nicht als Spalten gezählt werden, weil ich ja skip_header=1 hatte.

Aber jetzt bin ich schlauer :D

Re: Spalten in Form von arrays aus Textdatei extrahieren

Verfasst: Montag 17. Dezember 2018, 16:19
von __blackjack__
@Lennart: Die Zeilen nach dem Header werden aber ziemlich sicher am Ende noch zwei Spaltentrenner haben, denn auch Felder in denen nichts steht, müssen ja getrennt werden. Wenn der Spaltentrenner ein '\t' ist, dann sieht man das natürlich nicht. Jedenfalls nicht solange man im Editor die Anzeige von „whitespace“-Zeichen nicht einschaltet.