Matrix in Python einlesen

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.
Monsi
User
Beiträge: 23
Registriert: Mittwoch 4. Februar 2009, 10:29

Matrix in Python einlesen

Beitragvon Monsi » Donnerstag 2. April 2009, 14:33

Hallo,

ich weiss nicht, wie ich eine Matrix aus einer .txt-Datei in Python einlesen kann.
Ich habe eine Matrix all_log im .txt-Format, aus dieser moechte ich Daten extrahieren und eine neue Matrix daraus erstellen. In "R" ging das alles recht leicht und mit wenig Code, aber bei Python weiss ich nicht, wie ich das genau bewerkstelligen soll. Wenn ich mit .read() die Datei einlese, bekomme ich einen String. Dieser String ist dann aber so verkettet, das es fuer mich keinen Sinn macht, Substrings zu bilden. Gibt es nicht irgendeinen Befehl, der Python sagt, dass die Datei als Matrix eingelesen werden soll?

Ratlose Gruesse, Katharina
DasIch
User
Beiträge: 2423
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Donnerstag 2. April 2009, 14:50

Wie sieht diese Matrix aus?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Donnerstag 2. April 2009, 16:14

DasIch hat geschrieben:Wie sieht diese Matrix aus?

Steht doch da!
Monsi hat geschrieben:Ich habe eine Matrix all_log im .txt-Format

SCNR ;-)

Alternativ gibt es doch zig Python-Bindings / Implementierungen von R. Einfach mal bei google suchen - die ersten Treffer sehen da recht vielversprechend aus.
Zuletzt geändert von Hyperion am Donnerstag 2. April 2009, 16:35, insgesamt 1-mal geändert.
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

Beitragvon b.esser-wisser » Donnerstag 2. April 2009, 16:27

Code: Alles auswählen

import mymodule
the_magic_python_matrix = mymodule.Matrix.from_file(FILENAME, mymodule.TXTFORMAT)
Du musst nur noch "mymodule.py" implementieren (d.h. Schreiben)

scnr, Jörg

ps.: Falls du wirklich nicht verstehst, warum dir keiner hilft: wir haben keine Ahnung was du machst/vorhast/machen willst, d.h. Welche module du kennst/lernen willst (z.B. pylab, numpy) was du mit der "Matrix" machen willst (plotten, normalisieren, etc.)
Wir haben schon 10% vom 21. Jahrhundert hinter uns!
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Donnerstag 2. April 2009, 16:46

Leute, das ist unhöflich: Die Frage wurde unpräzise gestellt - es wurde nachgehakt - gut ist.
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

Beitragvon lutz.horn » Freitag 3. April 2009, 08:58

Ich weiß leider nicht, wie in R eine Matrix repräsentiert wird. Für Python kannst Du z. B. eine zweidimensionale Liste verwenden.

Es habe matrix.txt den folgenden Inhalt.

Code: Alles auswählen

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16


Dann kann daraus auf die folgende Art eine zweidimensionale Liste gelesen werden.

Code: Alles auswählen

from pprint import pprint
matrix = []
for line in open("matrix.txt").readlines():
    matrix.append(line.split())
pprint(matrix)
# [['1', '2', '3', '4'],
#  ['5', '6', '7', '8'],
#  ['9', '10', '11', '12'],
#  ['13', '14', '15', '16']
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Beitragvon derdon » Freitag 3. April 2009, 09:54

Man kann über Dateiobjekte (heißt das so?) direkt iterieren:

Code: Alles auswählen

for line in open('...'): pass
Da bietet sich übrigens das with-statement an.
Monsi
User
Beiträge: 23
Registriert: Mittwoch 4. Februar 2009, 10:29

Beitragvon Monsi » Freitag 3. April 2009, 09:58

Ich war mir nicht im klaren darueber, dass meine Fragestellung unpraezise war. Um die Verwirrung aufzuloesen: ich habe eine Matrix mit Rohdaten von einem Experiment, unter anderem Reaktionszeiten. Diese will ich einlesen, um dann die RTS zu extrahieren und daraus die Mittelwerte zu berechnen. Dann sollen die mittleren RTs in einer neue Matrix mit anderen Variablen kombiniert werden. Numpy ist mir bekannt, ich wusste nur nicht, wie ich es dafuer nutzen kann. Mit numpy.loadtxt() kann ich eine Matrix einlesen. Hab also gefunden was ich gesucht habe.

Gruesse, Katharina
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Freitag 3. April 2009, 11:45

Hoi

Monsi hat geschrieben:Hab also gefunden was ich gesucht habe.


Das ist schön, aber selbst, wenn Du hier im Forum Experten für Dein Fach findest: Jeder hier erwartet Probleme rund um die Programmierung von Python und wenn Du etwas vom Thema abweichst, mußt Du es einführen. Das ist quasi, wie beim Vortrag vor Laien. Wenn Du z. B. von RTs sprichst und nicht sagst, worum es *genau* geht, wie das Format *genau* aussieht und wo Du *genau* hinwillst, wird man Dir im Zweifel nicht weiterhelfen können.
Als Tipps fürs nächste Mal: Abkürzungen nur verwenden, wenn sie allgemein bekannt sind oder von Dir eingeführt wurden und auch erklären worum es geht. Ich würde z. B. unstellen, dass der Mittelwert das arithmetische Mittel dieser Werte ist - aber selbstverständlich ist das keineswegs. Und ohne solches Wissen, kann man Dir eigentlich auch nicht sage, wie Die Lösung lautet. Ok, das ist jetzt haarspalterisch, aber ich hoffe es kam rüber, was ich eigentlich sagen wollte *kopfkratz*.

Gruß,
Christian
Monsi
User
Beiträge: 23
Registriert: Mittwoch 4. Februar 2009, 10:29

Beitragvon Monsi » Freitag 3. April 2009, 12:20

Ja, ich habe verstanden was du meinst. Danke fuer die Hinweise.

Gruesse, Katharina

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]