Array spaltenweise bearbeiten.

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
Ymaoh
User
Beiträge: 10
Registriert: Samstag 29. Juli 2017, 09:20

Hey!
Ich möchte folgendes machen: Ich habe ein Array mit der Form (10,400), also 10 Zeilen mit je 400 Einträgen. Ich habe hier als Beispiel einfach mal ein Array mit zwei Zeilen und fünf Einträgen genommen, der Übersicht halber. Ich möchte jetzt das Array Spaltenweise weiterverarbeiten, zum Beispiel die Summe über die Einträge bilden. Wenn ich das wie hier im Beispiel versuche, wird das immer Zeilenweise gemacht. Also, aus dem (2,5) Array wird eine Liste mit zwei Einträgen, ich möchte aber eine mit fünf, also über die übereinander liegenden Zahlen (wenn man sich das Array als Matrix vorstellt) ((Also die Liste sollte so aussehen: [2,6,8,11,13])). Kann ich das irgendwie auf diesem Weg machen?

Code: Alles auswählen

x = [1,4,5,7,8]
x = np.asarray(x)
y = [1,2,3,4,5]
y = np.asarray(y)


liste = []

test_array = np.vstack((x,y))
for column in test_array:
    liste.append(column.sum())
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du könntest mit der Transponierten arbeiten.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

»sum« kennt verschiedene Argumente:

Code: Alles auswählen

test_array = np.array(
    [[1, 4, 5, 7, 8],
     [1, 2, 3, 4, 5]])
summe = test_array.sum(axis=0)
# --> array([ 2,  6,  8, 11, 13])
Ymaoh
User
Beiträge: 10
Registriert: Samstag 29. Juli 2017, 09:20

Hey, danke für die antworten. Die Argumente von .sum() zu nutzen, funktioniert natürlich, aber ich will die Daten auch noch anders bearbeiten.
Aber die Transponierte zu nutzen funktioniert sehr gut.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Ymaoh: es gibt für fast alle Operationen vektorisierte Formen. Dass man bei numpy mit for-Schleifen arbeiten muß, ist höchst selten. Was willst Du tatsächlich machen?
Antworten