Seite 1 von 1

Array spaltenweise bearbeiten.

Verfasst: Montag 2. Oktober 2017, 09:46
von Ymaoh
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())

Re: Array spaltenweise bearbeiten.

Verfasst: Montag 2. Oktober 2017, 09:59
von __deets__
Du könntest mit der Transponierten arbeiten.

Re: Array spaltenweise bearbeiten.

Verfasst: Montag 2. Oktober 2017, 10:04
von Sirius3
»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])

Re: Array spaltenweise bearbeiten.

Verfasst: Montag 2. Oktober 2017, 11:33
von Ymaoh
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.

Re: Array spaltenweise bearbeiten.

Verfasst: Montag 2. Oktober 2017, 11:44
von Sirius3
@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?