Zusammenfassung der Achsenoptionsspezifikation von Python "numpy.sum (...)"

Einführung

Dies ist eine Zusammenfassung der ** Achsenoptionen **, die mit "numpy.ndarray.sum (...)" und "numpy.ndarray.mean (...)" angegeben werden können. Wir werden anhand von Zahlen für zweidimensionale und dreidimensionale Numpy-Arrays erklären.

Für ein zweidimensionales Numpy-Array

Zielen Sie zunächst auf ein zweidimensionales (ndim = 2) Numpy-Array. Betrachten Sie als Beispiel die folgenden ** 3 Zeilen 4 Spalten ** ** 2-dimensionales Numpy-Array ** </ font> x.

m1.png

Dieses Array "x" kann mit dem folgenden Code generiert werden.

shape=(3,4)Generiere ein numpy Array von


import numpy as np
x = np.arange(1,12+1).reshape(3,4)
print(x)
#print(x.ndim)  # -> 2
#print(x.shape) # -> (3, 4)

Ausführungsergebnis


[ [ 1  2  3  4]
  [ 5  6  7  8]
  [ 9 10 11 12] ]

Geben Sie "axis = None" an

Da "axis = None" das Standardargument ist, tun sowohl "x.sum ()" als auch "x.sum (axis = None)" dasselbe. Referenz für numpy.sum (...) / numpy.ndarray.sum (...)

sum(axis=None)


s = x.sum(axis=None)
# print(type(s)) # -> <class 'numpy.int64'>
# print(s.ndim)  # -> 0
# print(s.shape) # -> ()
print(s)

Wenn "Achse = Keine" angegeben ist, wird die Summe aller Elemente berechnet, aus denen das Array ** besteht. Insbesondere wird $ 1 + 2 + 3 + \ cdots + 11 + 12 = $ $ \ bf {78} $ </ font> berechnet.

Ausführungsergebnis


78

Geben Sie "Achse = 0" an

sum(axis=0)


s = x.sum(axis=0)
# print(type(s)) # -> <class 'numpy.ndarray'>
# print(s.ndim)  # -> 1
# print(s.shape) # -> (4,)
print(s)

Ausführungsergebnis


[15 18 21 24]

Wenn Sie "Achse = 0" angeben, werden die Elemente ** in Zeilenrichtung ** summiert. Insbesondere $ 1 + 5 + 9 = $ $ \ bf {15} $ </ font>, $ 2 + 6 + 10 = $ $ \ bf {18} $ </ font>, $ 3 + 7 + 11 = $ $ \ bf {21} $ </ font>, $ 4 + 8 + 12 = $ $ \ Bf {24} $ </ font> wird als "[15 18 21 24]" berechnet.

ma0.png ma0s.png

** [Achtung]: Die Elemente werden in der Zeilenrichtung (der Richtung, in der die Zeile 0, 1, 2, 3, ... wird) summiert, nicht in der Summe der Elemente in jeder Zeile. Bitte beachten Sie, dass ** </ font> (Wenn Sie hier falsch verstehen, werden Sie sofort in ??? fallen (Erfahrungsgeschichte)).

Geben Sie "Achse = 1" an

sum(axis=1)


s = x.sum(axis=1)
# print(type(s)) # -> <class 'numpy.ndarray'>
# print(s.ndim)  # -> 1
# print(s.shape) # -> (3,)
print(s)

Ausführungsergebnis


[10 26 42]

Wenn Sie "Achse = 1" angeben, werden die Elemente in Richtung der Spalte ** summiert (die Richtung, in der die Spalte größer wird als 0, 1, 2, 3, ...) **. Insbesondere $ 1 + 2 + 3 + 4 = $ $ \ bf {10} $ </ font>, $ 5 + 6 + 7 + 8 = $ $ \ Bf {26} $ </ font>, $ 9 + 10 + 11 + 12 = $ $ \ bf {42} $ </ font> wird berechnet [10 26 42 ] .

ma1.png ma1s.png

Für 3D-Numpy-Array

Als nächstes werden wir auf ein dreidimensionales Numpy-Array abzielen. Als Beispiel werden wir mit dem Numpy-Array "x" mit der Form (3,4,2) arbeiten.

shape=(3,4,2)Generiere ein numpy Array von


import numpy as np
x = np.arange(1,24+1).reshape(3,4,2)
print(x)
# print(x.ndim)  # -> 3
# print(x.shape) # -> (3, 4, 2)

Ausführungsergebnis (Die Zeilenumbruchposition ist zur besseren Lesbarkeit formatiert)


[  [  [ 1  2]  [ 3  4] [ 5  6]  [ 7  8]  ]
   [  [ 9 10]  [11 12]  [13 14]  [15 16]  ] 
   [  [17 18]  [19 20]  [21 22]  [23 24]  ]  ]

Wenn Sie separat mit "Achse = 2" zeichnen, ist dies wie folgt.

m2.png

Geben Sie "axis = None" an

sum(axis=None)


s = x.sum(axis=None)
# print(type(s)) # -> <class 'numpy.int64'>
# print(s.ndim)  # -> 0
# print(s.shape) # -> ()
print(s)

** Summe für alle Elemente **. Insbesondere werden $ 1 + 2 + 3 + 4 + \ cdots + 22 + 23 + 24 = 300 $ berechnet.

Ausführungsergebnis


300

Geben Sie "Achse = 0" an

sum(axis=0)


s = x.sum(axis=0)
# print(type(s)) # -> <class 'numpy.ndarray'>
# print(s.ndim)  # -> 2
# print(s.shape) # -> (4, 2)
print(s)

Ausführungsergebnis


[ [27 30]
  [33 36]
  [39 42]
  [45 48] ]

Durch Angabe von "Achse = 0" werden die Elemente in ** Zeilenrichtung ** summiert.

Das erste Element des obigen Ausführungsergebnisses "[27 30]" ist $ 1 + 9 + 17 = $ $ \ bf {27} $ </ font>, $ 2 + 10 + 18 = $ Dies ist das Ergebnis, das als $ \ bf {30} $ </ font> berechnet wird.

m2a0.png m2as.png

"x", das Form = (3,4,2) war, wird mit "x.sum (Achse = 0)" zu Form = (4,2).

Geben Sie "Achse = 1" an

sum(axis=1)


s = x.sum(axis=1)
# print(type(s)) # -> <class 'numpy.ndarray'>
# print(s.ndim)  # -> 2
# print(s.shape) # -> (3, 2)
print(s)

Ausführungsergebnis


[ [16 20]
  [48 52]
  [80 84] ]

Durch Angabe von "Achse = 1" werden die Elemente in der ** Spaltenrichtung ** summiert. Das erste Element "[16 20]" des obigen Ausführungsergebnisses ist $ 1 + 3 + 5 + 7 = $ $ \ bf {16} $ </ font>, $ 2 + 4 + 6 + Das Ergebnis wird berechnet als 8 = $ $ \ bf {20} $ </ font>.

m2a1.png m2a1s.png

"x", das Form = (3,4,2) war, wird Form "(3,2) mit" x.sum (Achse = 1) ".

Geben Sie "Achse = 2" an

sum(axis=2)


s = x.sum(axis=2)
# print(type(s)) # -> <class 'numpy.ndarray'>
# print(s.ndim)  # -> 2
# print(s.shape) # -> (3, 4)
print(s)

Ausführungsergebnis


[ [ 3  7 11 15]
  [19 23 27 31]
  [35 39 43 47] ]

Wenn Sie "Achse = 2" angeben, werden die Elemente in ** Kanalrichtung ** summiert, wenn es sich um ein Bild handelt. Das erste obere linke Element "3" des obigen Ausführungsergebnisses ist $ 1 + 2 = $ $ \ bf {3} $ </ font>, und das untere rechte Element "47" ist $ 23 + 24 = Dies ist das Ergebnis, das als $ $ \ bf {47} $ </ font> berechnet wird.

m2a2.png m2a2s.png

"x", das Form = (3,4,2) war, wird mit "x.sum (Achse = 2)" zu Form = (3,4).

Geben Sie axis = (0,1) an

Ab NumPy 1.7 kann die Achse als Taple angegeben werden.

Die Angabe von "Achse = (0,1)" ergibt ** Summen für Zeilen und Spalten **. Das Ergebnis ist das gleiche, auch wenn "Achse = (1,0)" gesetzt ist (die Reihenfolge spielt keine Rolle).

sum(axis=(0,1))


s = x.sum(axis=(0,1))
#print(type(s)) # -> <class 'numpy.ndarray'>
#print(s.ndim)  # -> 1
#print(s.shape) # -> (2,)
print(s)

Ausführungsergebnis


[144 156]

Das erste Element "144" des Ausführungsergebnisses ist das Ergebnis der Berechnung der Summe aller Elemente von "x [:,:, 0]", dh $ 1 + 3 + 5 + 7 + \ cdots + 19 + 21 + 23 $ Werden.

m2a01.png m2a01s.png

"x", das Form = (3,4,2) war, wird Form "(2,) mit" x.sum (Achse = (0,1)) ".

Geben Sie "axis = (1,2)" an

Gleiches gilt für "Achse = (2,1)".

sum(axis=(1,2))


s = x.sum(axis=(1,2))
# print(type(s)) # -> <class 'numpy.ndarray'>
# print(s.ndim)  # -> 1
# print(s.shape) # -> (3,)
print(s)

Ausführungsergebnis


[ 36 100 164]

Das erste Element "36" des Ausführungsergebnisses ist die Summe der Elemente im blauen Rahmen in der folgenden Abbildung **, dh es wird $ (1 + 3 + 5 + 7) + (2 + 4 + 6 + 8) $ berechnet. Das Ergebnis ist.

m2a12.png m2a12s.png

"x", das Form = (3,4,2) war, wird mit "x.sum (Achse = (1,2))" zu Form = (3,).

Geben Sie "Achse = (0,2)" an

Gleiches gilt für axis = (2,0).

sum(axis=(0,2))


s = x.sum(axis=(0,2))
# print(type(s)) # -> <class 'numpy.ndarray'>
# print(s.ndim)  # -> 1
# print(s.shape) # -> (4,)
print(s)

Ausführungsergebnis


[57 69 81 93]

Das erste Element "57" des Ausführungsergebnisses ist das Ergebnis der Berechnung ** der Summe der Elemente im blauen Rahmen ** in der folgenden Abbildung, dh $ (1 + 9 + 17) + (2 + 10 + 18) $. ..

m2a02.png m2a02s.png

"x", das Form = (3,4,2) war, wird Form "(4,) mit" x.sum (Achse = (0,2)) ".

Geben Sie axis = (0,1,2) an

sum (axis = (0,1,2)) ist das gleiche wiesum (axis = None)oder sum () und die Summe aller Elemente wird berechnet.

sum(axis=(0,1,2))


s = x.sum(axis=(0,1,2))
#print(type(s)) # -> <class 'numpy.int64'>
#print(s.ndim)  # -> 0
#print(s.shape) # -> ()
print(s)

Ausführungsergebnis


300

"x", das Form = (3,4,2) war, wird Form "(0) mit" x.sum (Achse = (0,1,2)) ".

Recommended Posts