Aus Matrix auslesen

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.
Antworten
KomplexKompliziert
User
Beiträge: 20
Registriert: Freitag 29. Juni 2012, 09:05

Hallo zusammen!
Ich brauche mal wieder eure Hilfe bei einer wahrscheinlich ganz banalen Aufgabe:
Ich habe eine symmetrische Matrix D (die Matrix D berechnet sich pro Zeitschritt immer neu)

Code: Alles auswählen

>>>D
[              0,    0.3818,   0.61816]
[       0.3818,           0,     0.3818]
[      0.61816,    0.3818,           0]

In einer 2. Matrix DproZeit möchte ich die Werte 0.3818,0.61816,0.3818 wir folgt dargestellt haben (0.5 sind meine Startparameter, also in der t=0.Spalte stehen die 0.5, und jetzt soll in der 1.Spalte (t=1) die obigen Werte eingelesen werden, also

Code: Alles auswählen

>>>DproZeit
[0.5,    0.3818,    0,  0]
[0.5,  0.61816,    0,  0]
[0.5,    0.3818,   0,   0]
und so weiter. Es ist wichtig, dass die Reihenfolge eingehalten wird, also
DproZeit[0,t+1]=D[0,1]=0.3818
DproZeit[1,t+1]=D[0,2]=0.61816
DproZeit[2,t+1]=D[1,2]=0.3818
Ich krieg das einfach nicht so hin, hab schon alles mögliche probiert:
n=3, die t-Schleife habe ich weggelassen

Code: Alles auswählen

for k in range(0,n):
       for i in range(0,n):
             for j in range(0,n):
                    if i>j:
                        DproZeit[k,t+1]=D[i,j]
Das ist eine Version.
Wäre super, wenn mir irgendjemand helfen könnte!!!
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Ich habe jetzt ehrlich gesagt keine Lust mich durch die Indizes zu wühlen, aber die Lösung ist im Prinzip ganz einfach: Zerlege dein Problem einfach in Teilschritte und erstelle zu jedem for eine eigene Funktion (die 0 solltest du bei range übrigens als untere Granze auslassen, die ist implizit). Dann lässt sich das Problem leicht lösen.

Außerdem ist es bei einer Fehlerbeschreibung immer ganz hilfreich zu sagen, was denn eigentlich nicht funktioniert ;-) Gibt es eine Fehlermeldung und wenn ja welche, was für eine Ausgabe erwartest du und was für eine bekommst du, etc.

Sebastian
Das Leben ist wie ein Tennisball.
KomplexKompliziert
User
Beiträge: 20
Registriert: Freitag 29. Juni 2012, 09:05

Eine Fehlermeldung kriege ich nicht, er liest mir immer nur das falsche aus, also entweder

Code: Alles auswählen

DproZeit:
[0.5,   0.61816,    0,  0]
[0.5,    0.3818,    0,  0]
[0.5,    0.3818,   0,   0]
oder

Code: Alles auswählen

DproZeit:
[0.5,    0.3818,    0,  0]
[0.5,    0.3818,    0,  0]
[0.5,    0.3818,   0,   0]
ich brauche aber

Code: Alles auswählen

[0.5,    0.3818,    0,  0]
[0.5,  0.61816,    0,  0]
[0.5,    0.3818,   0,   0]
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

In deiner Matrix kommen alle Werte "tausenmal" vor, kannst du den mal ein Beispiel geben ohne 0,61348098 sondern mal ne 1,2,3...9,...12 Matrix und sagen was du machen willst?

Ist den folgendes keine Lösung des Problems?

Code: Alles auswählen

DproZeit = np.zeros((4, 4))
for t in xrange(3):
    D = update_D()
    DproZeit[0,t+1]=D[0,1]
    DproZeit[1,t+1]=D[0,2]
    DproZeit[2,t+1]=D[1,2]
Antworten