Guten Tag allerseits,
ich arbeite mich gerade in Python ein und habe Schwierigkeiten bei dem Umgang mit meinem 64darray. Dieser stellt quasi eine Matrix da, mit jeweils 64 Einträgen. Nun möchte ich gerne die Summe aus den Werten pro Array ermitteln. In C habe ich sowas immer über for-Schleifen gemacht, z.B j=0, for(i=0,i<63, i++): if i>=63 than j=j+1 als nicht lauffähiges Beispiel. Mit dem Integer j hätte ich dann den Zeilenwechsel vollzogen.
Wenn ich bei Python for x in data_array reingehe und Beispielsweise sage :np.sum(data_array) gibt er mir ja die Summe aller Einträge der Arrays aus. Wie gebe ich Python die Randbedingung, dass er in der Schleife die Summe für die einzelnen Arrays bilden soll und diese als neuen Array abspeichert? Sprich von folgenden Array:
[[ 0. 0. 0. ... 0. 0. 0. ] #Zeile1
[ 2.92359375 2.92359375 2.92359375 ... 2.92359375 2.92359375
2.92359375] #Zeile 2
...
[ 5.8471875 5.8471875 5.8471875 ... 5.8471875 5.8471875
5.8471875 ] #Zeilex
zu:
[Sum(Zeile1), Sum(Zeile2), ...., Sum(Zeilex)]
Über ein Schlagwort oder Gednakenasntoß würde ich mich freuen. Eine Komplettlösung ist auch meinerseits nicht gewünscht.
VG Pumpen_Heinrich
Wie setzte ich die typischen Zählschleifen aus C in Python um?
Das Schlagwort ist `axis`. Steht in der Dokumentation beschrieben.
Und allgemein (wenn man nicht gerade mit `numpy`-Typen hantiert), macht man das, indem man direkt über die Sequenz iteriert (Zählschleifen sind in Python (und eigentlich allen anderen Sprachen der letzten 40 Jahre) ein Antipattern):
oder pythonischer, indem man das Erstellen der neuen Liste als List Comprehension formuliert:
Und allgemein (wenn man nicht gerade mit `numpy`-Typen hantiert), macht man das, indem man direkt über die Sequenz iteriert (Zählschleifen sind in Python (und eigentlich allen anderen Sprachen der letzten 40 Jahre) ein Antipattern):
Code: Alles auswählen
def sum_rows(rows):
result = []
for row in rows:
result.append(sum(row))
return result
Code: Alles auswählen
def sum_rows(rows):
return [sum(row) for row in rows]
- __blackjack__
- User
- Beiträge: 14078
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Ergänzend: Für den einfachen Fall, dass nur eine vorhandene Funktion auf die Elemente eines iterierbaren Objekts angewendet werden sollen, gäbe es dann noch diese Variante:
Code: Alles auswählen
def sum_rows(rows):
return list(map(sum, rows))
“Vir, intelligence has nothing to do with politics!” — Londo Mollari