Ich habe ein numpy Array mit einer Form von:
%Vor%Ich möchte den Mittelwert über die 25 Elemente jeder 'Scheibe' des Arrays [0,:,:], [1,:,:] usw. berechnen und 11 Werte zurückgeben.
Es scheint albern, aber ich kann nicht herausfinden, wie das geht. Ich dachte, die Funktion mean(axis=x)
würde dies tun, aber ich habe alle möglichen Achskombinationen ausprobiert und keiner von ihnen gibt mir das gewünschte Ergebnis.
Ich kann das natürlich mit einer for-Schleife und Slicing machen, aber es gibt einen besseren Weg?
Verwenden Sie ein Tupel für die Achse:
%Vor%Edit: Dies funktioniert nur mit numpy Version 1.7 +.
Kann immer n.einsum verwenden:
%Vor%Funktioniert auf höher dimensionalen Arrays (alle diese Methoden würden, wenn die Achsenbeschriftungen geändert werden):
%Vor%Schneller zu booten:
%Vor%Skaliert etwas besser als die anderen Methoden, da die Array-Größe zunimmt.
Durch die Verwendung von dtype=np.float64
werden die oben genannten Zeitpunkte nicht merklich geändert. Überprüfen Sie daher einfach Folgendes:
Auch etwas, das interessant ist:
%Vor% Sie können reshape(11, 25)
und dann mean
nur einmal (schneller) aufrufen:
Alternativ können Sie np.mean
zweimal aufrufen (ca. 2 x langsamer auf meinem Computer):
Tags und Links arrays numpy multidimensional-array slice mean