Hallo!
Ich habe das Problem, dass ich ein großes Numpy-Array (viele Zeilen) in Teil-Arrays unterschiedlicher länge zerlegen möchte und diese Arrays jeweils in einer eigenen Variable ablegen möchte. Da die Zeilen, an denen das Haupt-Array getrennt werden soll, von den darin gespeicherten Daten abhängt, scheint mir das mit Indizierung nicht zu funktionieren.
Die einzige Möglichkeit, welche mir bisher untergekommen ist, ist eine for-Schleife mit dynamischen Variablen, welche den Bereich prüft und die Daten dann in eine Variable schreibt, die vom Laufindex abhängt. Das Problem ist nun, dass überall zu lesen ist, dass man dynamische Variablen tunlichst vermeiden soll.
Daher zwei Fragen:
1. Warum soll man dyn. Variablen in einem Script, dass nur einmal durchläuft ohne Benutzereingaben zu verlangen denn unbedingt vermeiden. Sie sind zwar dynamisch aber trotzdem eindeutig?!?
2. Wie macht man so etwas am sinnvollsten?
Danke!
for-Schleife mit dynamischen Variablen
@gobel: am sinnvollsten vermeidet man dynamische Variablen, indem man eine passende Datenstruktur benutzt. Also bei Dir wahrscheinlich ein Wörterbuch, dessen Schlüssel die Trennkriterien sind. Oder eine Liste, wenn da irgendwas abgearbeitet wird. Um zu sagen, wie Du genau am besten trennst, müßtest Du nochmal genauer beschreiben, was da indiziert werden soll und wie die Bedingungen sind.
Hier mal ein Beispiel:
Die Grenzen sind hier jetzt mal gegeben. Die Zahlen geben die Indizes des Ausgangsarrays an, an denen getrennt werden soll.
Zwei Probleme ergeben sich hier:
1. Die dynamischen Variablen
2. ich hätte die Variablen gerne in einer neuen Liste, Problem: Mit den Globals funktioniert append() nicht.
Code: Alles auswählen
import numpy as np
x = np.linspace(0,1000,1001)
ls = [0,24,456,786,907,len(x)-1] # Berechnete Grenzen
for i in range(len(ls)-1):
globals()['variable{}'.format(i)] = x[ls[i]:ls[i+1]+1]
ls2 = [variable0,variable1,variable2,variable3,variable4]
print(ls2)
Zwei Probleme ergeben sich hier:
1. Die dynamischen Variablen
2. ich hätte die Variablen gerne in einer neuen Liste, Problem: Mit den Globals funktioniert append() nicht.
@gobel: der Zwischenschritt über die globalen dynamischen Variablen ist genauso unnötig wie umständlich und schwer zu lesen.
Code: Alles auswählen
import numpy as np
x = np.arange(1001)
ls = [0,24,456,786,907,len(x)-1] # Berechnete Grenzen
ls2 = [
x[start:stop+1]
for start, stop in zip(ls, ls[1:])
]
print(ls2)