Seite 1 von 1

Matrix in Python einlesen

Verfasst: Donnerstag 2. April 2009, 14:33
von Monsi
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

Verfasst: Donnerstag 2. April 2009, 14:50
von DasIch
Wie sieht diese Matrix aus?

Verfasst: Donnerstag 2. April 2009, 16:14
von Hyperion
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.

Verfasst: Donnerstag 2. April 2009, 16:27
von b.esser-wisser

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.)

Verfasst: Donnerstag 2. April 2009, 16:46
von CM
Leute, das ist unhöflich: Die Frage wurde unpräzise gestellt - es wurde nachgehakt - gut ist.

Verfasst: Freitag 3. April 2009, 08:58
von lutz.horn
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']

Verfasst: Freitag 3. April 2009, 09:54
von derdon
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.

Verfasst: Freitag 3. April 2009, 09:58
von Monsi
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

Verfasst: Freitag 3. April 2009, 11:45
von CM
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

Verfasst: Freitag 3. April 2009, 12:20
von Monsi
Ja, ich habe verstanden was du meinst. Danke fuer die Hinweise.

Gruesse, Katharina