hallo,
ich bin gerade dabei, mich in python "hineinzuschnuppern". finde ja, daß es eine gute entscheidung war, allerdings komm ich noch nicht so ganz mit den tausenden von hilfen klar, d.h. hab' einfach noch nicht die richtige für mein kleines problemchen gefunden. vielleicht findet sich ja hier jemand, der mir einen kleinen tip geben kann?
mein problem: es muß doch einen einfachen befehl geben, sowas in der art wie 'save' oder 'write'*, mit dem man mehrdimensionale arrays als ascii schreiben kann? für ein 2dim array z.b. sollen im file dann 2 spalten mit den werten stehen. binär hab' ich das ganze schon untergebracht, auch 1dim arrays sind kein problem als ascii (mit schleife). oder sollte ich nun einfach 2 schleifen draus machen? kann man das dann trotzdem wieder als 2 spalten rauslesen? also n schleifen für n dimensionen? das geht doch bestimmt auch eleganter? welches package benötige ich?
lg und danke,
lise
mehrdimensionale arrays als ascii speichern
danke, javascript:emoticon(':)')
Smile
ich werd' mir das alles mal anschauen. mir ist da inzwischen auch noch eine andere möglichkeit ein- bzw. aufgefallen:
hier ist mein codeschnipsel:
***********************
****************************javascript:emoticon(':D')
Very Happy (weil funktioniert...)
sollte einer der meinung sein, das geht definitiv einfacher, eleganter oder
sonst wie günstiger, soll er/sie mir das bitte mitteilen, damit ich mir meinen Rundumblick aufbauen kann; einstweilen läufts erst mal..
lise
Smile
ich werd' mir das alles mal anschauen. mir ist da inzwischen auch noch eine andere möglichkeit ein- bzw. aufgefallen:
hier ist mein codeschnipsel:
***********************
Code: Alles auswählen
value_table_scipy = scipy.array(value_table)
t_value_table = value_table_scipy.transpose()
[color=orange]def[/color][color=blue]save_valueTable_asText[/color]():
valueTable_txt = scipy.array(t_value_table) [color=red]# wieso muss man hier 'umwandeln'?[/color]
f_txt = [color=indigo]file[/color]([color=green]'save_valueTable_text.dat'[/color], [color=green]'w'[/color])
scipy.io.write_array(f_txt, valueTable_txt)
f_txt.close()
[color=orange]def[/color] [color=blue]read_valueTable_fromText[/color]():
f_txt = [color=indigo]file[/color]([color=green]'save_valueTable_text.dat'[/color], [color=green]'r'[/color])
valueTable_txt = scipy.io.read_array(f_txt)
[color=orange]print[/color] valueTable_txt
[color=orange]global[/color] table
table = valueTable_txt
save_valueTable_asText()
read_valueTable_fromText()
Very Happy (weil funktioniert...)
sollte einer der meinung sein, das geht definitiv einfacher, eleganter oder
sonst wie günstiger, soll er/sie mir das bitte mitteilen, damit ich mir meinen Rundumblick aufbauen kann; einstweilen läufts erst mal..
lise
sorry für den buchstabenmüll - hier kommt der code noch mal, da ich das problem gerade noch suche, eben erst mal "ungehighlighted":
***************************
***************************
lise
***************************
Code: Alles auswählen
def save_valueTable_asText():
valueTable_txt = scipy.array(t_value_table) # warum 'umwandeln'?
f_txt = file('save_valueTable_text.dat', 'w')
scipy.io.write_array(f_txt, valueTable_txt)
f_txt.close()
def read_valueTable_fromText():
f_txt = file('save_valueTable_text.dat', 'r')
valueTable_txt = scipy.io.read_array(f_txt)
print valueTable_txt
global table
table = valueTable_txt
save_valueTable_asText()
read_valueTable_fromText()
lise
Code: Alles auswählen
öhmm kleiner Tipp... deinen gesamten Code einfach in
[/code] einfügen.
sieht dann so aus:
und ... es gibt eine EDIT Funktion
MfG EnTeQuAk
Code: Alles auswählen
[code=py]#hier steht der Code
sieht dann so aus:
Code: Alles auswählen
#hier steht dann der Code
print 'Test... hier ein farblich hervorgehobenes "print"'
#usw...
MfG EnTeQuAk
Code: Alles auswählen
value_table_scipy = scipy.array(value_table)
t_value_table = value_table_scipy.transpose()
def save_valueTable_asText():
valueTable_txt = scipy.array(t_value_table) # warum 'umwandeln'?
f_txt = file('save_valueTable_text.dat', 'w')
scipy.io.write_array(f_txt, valueTable_txt)
f_txt.close()
def read_valueTable_fromText():
f_txt = file('save_valueTable_text.dat', 'r')
valueTable_txt = scipy.io.read_array(f_txt)
print valueTable_txt
global table
table = valueTable_txt
save_valueTable_asText()
read_valueTable_fromText()
Code: Alles auswählen
Code: Alles auswählen
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, Serialisierung mit `pickle` ist definitiv einfacher, eleganter und auch sonstwie günstiger.lise hat geschrieben:sollte einer der meinung sein, das geht definitiv einfacher, eleganter oder sonst wie günstiger, soll er/sie mir das bitte mitteilen, damit ich mir meinen Rundumblick aufbauen kann; einstweilen läufts erst mal..
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Solltest du das nicht besser bei der Ausgabe machen?lise hat geschrieben:wie kann ich möglichst einfach (mit meiner Variante, wenn irgendwie geht) alle Werte im Array im Format %.4e schreiben?
So geht's:
Code: Alles auswählen
print "%.4e" % 1254634.435345
1.2546e+006
Hoi,
ich klinke mich wohl etws spät in die Diskussion ein, aber kennt ihr PyTables? Dieses Modul erleichert mit Sicherheit die Arbeit mit wirklich großen Datensätzen.
Ansonsten bevorzuge ich ja das Verpacken meiner array-Daten in physikalischen Kontext in einer Klasse und Picklen der Klasseninstanzen.
Ansonsten, lise, zu Deinem Schnipsel: Du mußt umwandeln, weil scipy / numpy nur mit numpy-Arrays verfahren kann. Listen und Tuple müssen vorher konvertiert werden. Außerdem verstehe ich das global-Statement nicht, welchen Sinn soll das haben? Besser wäre es die Daten an die Funktionen zu übergeben und das eine oder andere return-Statement.
Zum Schluß noch meine unmaßgebliche Meinung zum Thema Speichern und Präzission (wobei ich nicht weiß, ob ich die Frage richtig verstanden habe): Niemals (!) runden beim Speichern von Daten. (Eigentlich überhaupt nicht runden, außer vielleicht bei einer finalen Ausgabe, um es schön benutzerfreundlich zu halten.)
Gruß,
Christian
edit: Rechtschreibung
ich klinke mich wohl etws spät in die Diskussion ein, aber kennt ihr PyTables? Dieses Modul erleichert mit Sicherheit die Arbeit mit wirklich großen Datensätzen.
Ansonsten bevorzuge ich ja das Verpacken meiner array-Daten in physikalischen Kontext in einer Klasse und Picklen der Klasseninstanzen.
Ansonsten, lise, zu Deinem Schnipsel: Du mußt umwandeln, weil scipy / numpy nur mit numpy-Arrays verfahren kann. Listen und Tuple müssen vorher konvertiert werden. Außerdem verstehe ich das global-Statement nicht, welchen Sinn soll das haben? Besser wäre es die Daten an die Funktionen zu übergeben und das eine oder andere return-Statement.
Zum Schluß noch meine unmaßgebliche Meinung zum Thema Speichern und Präzission (wobei ich nicht weiß, ob ich die Frage richtig verstanden habe): Niemals (!) runden beim Speichern von Daten. (Eigentlich überhaupt nicht runden, außer vielleicht bei einer finalen Ausgabe, um es schön benutzerfreundlich zu halten.)
Gruß,
Christian
edit: Rechtschreibung
jens:
so werd' ich's dann also erst mal machen, danke; ursprünglich wollte ich die Daten schon 'schick fertig' speichern, damit man sie mit einem beliebigen anderen Programm auswerten kann und sozusagen immer das gleiche drinsteht (müßte dann nicht dauernd diesselbe Frage beantworten...) Aber da ich die Auswertesoftware wohl gleich mitliefern werde, ist das ja egal...
CM:
PyTables hatte ich auch schon im Auge, sieht bloß irgendwie für's Erste kompliziert aus (und isch hab's n'bissl eilig...)
zum 'global': hab' mir irgendwie eingebildet, daß ich damit eine globale Variable 'definiere'? Vorher hatte ich versucht meine Daten einfach an eine Variable zu übergeben, als eingelesenes Array eben, das ist allerdings fehlgeschlagen, so ging's dann.
lg, lise