Array aufsummieren

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.
Benutzeravatar
tromai
User
Beiträge: 92
Registriert: Mittwoch 26. April 2006, 11:20

Array aufsummieren

Beitragvon tromai » Dienstag 5. September 2006, 11:53

Hallo zusammen,

ich steh grad irgendwie ziemlich auf dem Schlauch und ich finde in meiner geistigen Umnachtung dazu auch irgendwie nicht. Folgendes Problem:

Ich habe einen numpy.array der Dimension 4x4x3x3. Ich habe also 16 3x3 Matrizen. Von diesen Matrizen möchte ich die Summe berechnen und in einem 4x4 Array speicher. Alles was ich bisher hinbekommen habe ist, dass er entwerder das gesamte 4x4x3x3-Array oder die jeweiligen [x][y]-Elemente der 16 3x3-Arrays summiert.

Mit numpy.sum():

Code: Alles auswählen

a[1][1][:][:].sum()

bekomme ich die Summe die ich will. Allerdings müsste ich dann über die erste und zweite Dimension iterieren. Das muss doch auch in einem Rutsch gehen, so dass ich gleich ein 4x4-Array bekomme. Es kann eigentlich nicht so schwierig sein.

Ich hoffe Ihr könnt mir weiterhelfen.

Danke.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Dienstag 5. September 2006, 16:47

Hallo,

ein Versuch (ungetestet, denn sonst bräuchte ich Werte):
Wenn a Dein array ist könnte

Code: Alles auswählen

add.reduce(take(a,[indices],axis=0))
gehen, wobei indices die Indizes sind, die Du als Liste generieren mußt (ein range dürfte es tun) und axis per default 0 ist, von Dir aber auf jeden anderen Wert gesetzt werden kann.

Gruß,
Christian
Benutzeravatar
tromai
User
Beiträge: 92
Registriert: Mittwoch 26. April 2006, 11:20

Beitragvon tromai » Mittwoch 6. September 2006, 09:53

Mir ist es jetzt doch noch wie Schuppen von den Augen gefallen! Es ist ganz einfach:

Code: Alles auswählen

arr.sum(axis=3).sum(axis=2)

liefert das gewünschte Ergebnis. Dein Vorschlag funktioniert natürlich auch, allerdings scheint mir sum() etwas schneller zu sein. Aber trotzdem danke für den Tip. Er hat mich darauf gebracht, dass ich vielleicht einfach mal axis=... ausprobieren könnte ^^
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Mittwoch 6. September 2006, 10:11

Gern geschehen ;-), aber vielleicht beim nächsten Mal ein Beispiel mit hereingeben, denn dann kann man ggf. auch die Antwort vorher testen. (Ich jedenfalls weiß nicht immer auswendig, ob jetzt bei der einen oder anderen Methode nur ein Skalar zurückkommt oder nur eine Exception ...)

Gruß,
Christian
Benutzeravatar
tromai
User
Beiträge: 92
Registriert: Mittwoch 26. April 2006, 11:20

Beitragvon tromai » Donnerstag 7. September 2006, 11:03

Ok, beim nächsten Mal dann mit Beispiel.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder