2017-07-25 4 views
3

Zum Beispiel gibt es eine 4 * 2-Matrix:Prozess Matrix in Python

[[1, 2], [3, 4], [5, 6],[7,8]] 

Ich will es davon 2 * 2-Matrix und den Wert neu zu gestalten ist der Mittelwert der ursprünglichen Matrix, so Das Ergebnis ist:

[[2,3],[6,7]] 

Gibt es einen effektiven Weg, es zu tun?

Dank

Antwort

2

Sie können das Array neu zu gestalten bis 3d und dann entlang der zweiten Achse bedeuten nehmen:

a = np.array([[1, 2], [3, 4], [5, 6],[7,8]]) 
step = 2 

a.reshape(-1, step, a.shape[-1]).mean(1) 
#array([[ 2., 3.], 
#  [ 6., 7.]]) 

Oder verwenden np.add.reduceat alle zwei Zeilen hinzufügen und dann teilen, indem er 2:

step = 2 
np.add.reduceat(a, np.arange(0,len(a),step))/step 
#array([[ 2., 3.], 
#  [ 6., 7.]])