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.
snafu hat geschrieben:@nezzcarth: Man braucht keine `cat`-Ausgabe umzuleiten, um mit `awk` Dateien zu lesen. Ein ``awk '{print $3}' nodes.dat`` geht genau so.
Weil ich diese Antwort befürchtet habe, hatte ich das noch reineditiert Mag's mit cat trotzdem lieber, weil das ich das "bildlicher" finde.
Und noch was..
Wenn ich versuche eine Liste mit sehr vielen Unterelementen (Anzahl: 4800) in eine Datei schreibe, wird das in der Datei mit "...," verkürzt. Gibt es eine Methode dies zu umgehen?
Mir fällt nur die Möglichkeit ein, in einer for-Schleife die Unterelemente einzeln in die Datei zu schreiben, aber ich hoffe es geht auch einfacher.
barisoezcan hat geschrieben:Wenn ich versuche eine Liste mit sehr vielen Unterelementen (Anzahl: 4800) in eine Datei schreibe, wird das in der Datei mit "...," verkürzt.
Kann es sein, dass Dein Editor, mit dem Du es anschaust, das ausblendet?
barisoezcan hat geschrieben:Mir fällt nur die Möglichkeit ein, in einer for-Schleife die Unterelemente einzeln in die Datei zu schreiben, aber ich hoffe es geht auch einfacher.
barisoezcan hat geschrieben:Wenn ich versuche eine Liste mit sehr vielen Unterelementen (Anzahl: 4800) in eine Datei schreibe, wird das in der Datei mit "...," verkürzt.
Ist es denn wirklich eine Liste (der Standardtyp)?
Warum sind file und list keine guten Bezeichner? Sie beschreiben doch eigentlich genau das, was sie sind. Nämlich eine Datei und eine Liste.
Und dein Lösungsvorschlag funktioniert nicht wirklich. Die Ausgabe ändert sich lediglich zu:
[, ,0,.,3,1,2,6,3,4,0,1, , ,0,.,3,3,1,2,1,1,8,6, , ,0,.,3,3,3,2,8,7,6,1, ,.,.,.,,, , ,0,.,5,3,4,1,6,6,7,6, , ,0,.,5,3,1,7,9,4,9,2,, , ,0,.,5,3,0,7,1,8,0,9,]
Ich glaube nicht, dass mein Texteditor den Rest ausblendet.
Ich vermute eher, dass der "Fehler" bei der Konvertierung der Liste (EDIT: des Numpy-Arrays) zum String passiert.
Zuletzt geändert von barisoezcan am Samstag 13. April 2013, 23:05, insgesamt 4-mal geändert.
barisoezcan hat geschrieben:Wenn ich versuche eine Liste mit sehr vielen Unterelementen (Anzahl: 4800) in eine Datei schreibe, wird das in der Datei mit "...," verkürzt.
Ist es denn wirklich eine Liste (der Standardtyp)?
@nomnom:
Es wurde mit numpy.random.rand(x, y, z) angelegt.
Dann ist es ein Numpy-Array, oder?
Und warum passiert das bei einem großen Numpy-Array, dass es nicht vollständig ausgegeben wird?
barisoezcan hat geschrieben:Warum sind file und list keine guten Bezeichner? Sie beschreiben doch eigentlich genau das, was sie sind. Nämlich eine Datei und eine Liste.
Weil "file" und "list" Namen von "built-in" Funktionen sind. So können sich solche Probleme ergeben:
>>> list = [1,2,3]
>>> list(("foo", "bar", "baz")) # Versuch, Tupel in Liste umzuwandeln, aus welchem Grund auch immer
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable
barisoezcan hat geschrieben:Und warum passiert das bei einem großen Numpy-Array, dass es nicht vollständig ausgegeben wird?
Numpy-Arrays haben eine eigene "__str__"-Methode, die eben nur die je ersten und letzten drei Elemente anzeigt.
@barisoezcan: Das passiert weil `str()` eine Zeichenkettendarstellung ist die sich ein menschlicher Benuzter anschauen kann. Niemand möchte wirklich ein Array mit tausenden oder auch nur hunderten von Elementen tatsächlich *sehen*. Damit kann man doch gar nichts anfangen. Darum sind die `numpy`-Typen so nett und machen die Auslassungspunkte bei Strukturen die sowieso zu gross sind, als das sie ein Mensch sinnvoll erfassen kann. Das spart Zeit, Speicher, und Nerven.
Auch eine normale Liste würde man nicht mit `str()` umwandeln und in eine Datei schreiben. Damit kann man dann doch gar nichts anfangen. Die wieder einzulesen würde komplizierter als es sein müsste.
Wenn Du 2D-Daten schreiben möchtest, dann gibt es ganz allgemein das `csv`-Modul beziehungsweise die entsprechenden Funktionen im `numpy`-Modul zum Schreiben in Dateien.
barisoezcan hat geschrieben:Warum sind file und list keine guten Bezeichner? Sie beschreiben doch eigentlich genau das, was sie sind. Nämlich eine Datei und eine Liste.
Sie beschreiben den Daten*typen*, nicht aber deren Inhalt bzw Verwendungszweck. Ich gebe zu, dass man so manches Mal auch nur bei etwas sehr Allgemeinem, wie `data` statt `list` oder `outstream` statt `file` landet. Aber das ist IMHO trotzdem noch besser als die von dir gewählten Namen.
In deinem Fall würde sich vielleicht etwas wie `node_values` anbieten. Damit könnte jemand, der deinen Code nachvollziehen will, meiner Meinung nach etwas mehr anfangen als mit `list`.
EDIT: Achja, und die beiden von dir gewählten Namen überschreiben Built-ins, was zu Problemen führen kann, wie ja schon gezeigt wurde.