Dynamische Variabelnamen Python

Niklagaming

Lt. Junior Grade
Registriert
Okt. 2011
Beiträge
291
Moin zusammen,
ich habe momentan ein Problem. Ich importiere eine .asc Datei mit numpy.genfromtxt und möchte die importierte Datei auf mehrere numpy.arrays aufteilen. Es handelt sich um sehr viele Punkte mit ihren einzelnen Koordinaten. Eine sehr bescheuerte Lösung ist jetzt natürlich das Aneinanderreihen von Variabelndefinitionen:
Code:
x1 = numpy.array(data[:,0])
x2 = numpy.array(data[:,3])
x3 = numpy.array(data[:,6])
das möchte ich jetzt natürlich vermeiden da es ne Wall of Text ergibt und eigentlich unnötig ist das es ja immer genau derselbe Befehl mit sich ändernden Variabeln ist. Das Problem was ich jetzt habe ich die Benennung der Variabeln (x1,x2,x3, usw). Wie bekomme ich das am "saubersten" hin?
Code:
for i in range(5):
    x'i' = numpy.array(data[:,i*3])
sollte es vom Prinzip her aussehen. Ist das irgendwie umsetzbar oder gibt es eine bessere Methode?

Vielen Dank schon mal!
Gruß
 
Du könntest ne Klasse mit 3 Arrays machen. Die dann als Eingabe das zu ladende nimmt.
 
Ich kenne mich in Python nicht aus, aber normal nimmt man für sowas eine hashMap zum Beispiel her. Also ein Key-Value-Paar.
 
warum nicht einfach mit einer liste arbeiten?
Python:
x = [numpy.array(data[:, i*3]) for i in range(5)]

alternativ ein dictionary
Python:
x = {"x%s" % i: numpy.array(data[:, i*3]) for i in range(5)}

im dict seh ich jetzt aber keinen vorteil.
 
  • Gefällt mir
Reaktionen: kuddlmuddl, blöderidiot, madmax2010 und eine weitere Person
0x8100 schrieb:
warum nicht einfach mit einer liste arbeiten?
Python:
x = [numpy.array(data[:, i*3]) for i in range(5)]
Ganz genau. Warum der TE nun unbedingt x3 braucht und nicht x[3] wäre die eigentliche Frage.
Oder allgemein als Schnipsel:
Python:
[ columndata[:, column_id] for column_id in colunm_ids  ]
 
  • Gefällt mir
Reaktionen: Mulciber
nur als Idee:
ich hatte mal eine ähnliche SItuation, bei der ich anfänglich mit Listen gearbeitet habe.
spätestens wenn die Daten gesucht/sortiert/bearbeitet werden müssen, hab ich alles auf ein dict umgeschrieben.
in meiner Situation war es so, dass ich eine eindeutige zahl sozusagen als Index generiert habe, die war der dict-key. un der dict-value war ebenfalls ein dict, bei der dich bequemerweise gleich dann neben den rohdaten, bearbeitete daten, metadaten immer eindeutig reinschreiben und auch wieder leicht finden konnte.

kA ob es schönere Lösungen gibt, aber es ist leicht zu pflegen/erweiterbar und war für meinen usecase die beste option. Vielleicht bei dir etwas OVerkill, aber wenn du andere Daten später dazu verknüpfen willst, bietet es sich an.

Python:
datacollection = {
    0:{'ID':00000, 'name' = 'aName', 'data' = np.array, 'metaInfo': 'aBunchOfChars'},
    1:{'ID':00001, 'name' = 'anotherName', 'data' = np.array, 'metaInfo': 'anotherBunchOfChars'}
}

Nachtrag: OrderedDict gäbe es auch noch.
 
Zurück
Oben