Ceci est un résumé des ** options d'axe ** qui peuvent être spécifiées avec numpy.ndarray.sum (...)
et numpy.ndarray.mean (...)
. Nous expliquerons l'utilisation de figures pour des tableaux numpy en 2 et 3 dimensions.
Tout d'abord, ciblez un tableau numpy à deux dimensions (ndim = 2). À titre d'exemple, considérons les éléments suivants ** 3 lignes 4 colonnes ** ** tableau numpy à 2 dimensions ** </ font> x
.
Ce tableau «x» peut être généré avec le code suivant.
shape=(3,4)Générer un tableau numpy de
import numpy as np
x = np.arange(1,12+1).reshape(3,4)
print(x)
#print(x.ndim) # -> 2
#print(x.shape) # -> (3, 4)
Résultat d'exécution
[ [ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12] ]
Puisque ʻaxis = Noneest l'argument par défaut,
x.sum ()et
x.sum (axis = None)` ont le même comportement. Référence pour 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)
Si ʻaxis = None` est spécifié, la somme de ** tous les éléments qui composent le tableau ** est calculée. Plus précisément, $ 1 + 2 + 3 + \ cdots + 11 + 12 = $ $ \ bf {78} $ </ font> est calculé.
Résultat d'exécution
78
sum(axis=0)
s = x.sum(axis=0)
# print(type(s)) # -> <class 'numpy.ndarray'>
# print(s.ndim) # -> 1
# print(s.shape) # -> (4,)
print(s)
Résultat d'exécution
[15 18 21 24]
Si vous spécifiez ʻaxis = 0`, les éléments sont ** additionnés dans le sens des lignes **. Plus précisément, $ 1 + 5 + 9 = $ $ \ bf {15} $ </ font>, $ 2 + 6 + 10 = $ $ \ bf {18} $ </ font>, $ 3 + 7 + 11 = $ $ \ bf {21} $ </ font>, $ 4 + 8 + 12 = $ $ \ Bf {24} $ </ font> est calculé comme étant «[15 18 21 24]».
** [Attention]: Les éléments sont additionnés dans le sens de la ligne (le sens dans lequel la ligne devient 0, 1, 2, 3, ...), pas la somme des éléments de chaque ligne. Veuillez noter que ** </ font> (Si vous vous méprenez ici, vous tomberez dans ??? à la fois (histoire d'expérience)).
sum(axis=1)
s = x.sum(axis=1)
# print(type(s)) # -> <class 'numpy.ndarray'>
# print(s.ndim) # -> 1
# print(s.shape) # -> (3,)
print(s)
Résultat d'exécution
[10 26 42]
Si ʻaxis = 1est spécifié, les éléments sont additionnés dans la direction de la colonne ** (la direction dans laquelle la colonne devient plus grande que 0, 1, 2, 3, ...) **. Plus précisément, $ 1 + 2 + 3 + 4 = $ <font color = 'red'> $ \ bf {10} $ </ font>, $ 5 + 6 + 7 + 8 = $ <font color = 'red' > $ \ Bf {26} $ </ font>, $ 9 + 10 + 11 + 12 = $ <font color = 'red'> $ \ bf {42} $ </ font> est calculé
[10 26 42 ] ».
Ensuite, nous allons cibler un tableau numpy en trois dimensions. A titre d'exemple, nous allons travailler avec le tableau numpy x
avec la forme (3,4,2).
shape=(3,4,2)Générer un tableau numpy de
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)
Résultat de l'exécution (la position du saut de ligne est formatée pour la lisibilité)
[ [ [ 1 2] [ 3 4] [ 5 6] [ 7 8] ]
[ [ 9 10] [11 12] [13 14] [15 16] ]
[ [17 18] [19 20] [21 22] [23 24] ] ]
Si vous dessinez séparément avec ʻaxis = 2`, ce sera comme suit.
sum(axis=None)
s = x.sum(axis=None)
# print(type(s)) # -> <class 'numpy.int64'>
# print(s.ndim) # -> 0
# print(s.shape) # -> ()
print(s)
** Total pour tous les éléments **. Plus précisément, $ 1 + 2 + 3 + 4 + \ cdots + 22 + 23 + 24 = 300 $ est calculé.
Résultat d'exécution
300
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)
Résultat d'exécution
[ [27 30]
[33 36]
[39 42]
[45 48] ]
En spécifiant ʻaxis = 0`, les éléments sont additionnés dans le ** sens des lignes **.
Le premier élément [27 30]
du résultat d'exécution ci-dessus est $ 1 + 9 + 17 = $ $ \ bf {27} $ </ font>, $ 2 + 10 + 18 = $ C'est le résultat calculé comme suit: $ \ bf {30} $ </ font>.
x
, qui était shape = (3,4,2), devient shape = (4,2) avec x.sum (axis = 0)
.
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)
Résultat d'exécution
[ [16 20]
[48 52]
[80 84] ]
En spécifiant ʻaxis = 1, les éléments sont additionnés dans la ** direction de la colonne **. Le premier élément
[16 20]` du résultat d'exécution ci-dessus est $ 1 + 3 + 5 + 7 = $ $ \ bf {16} $ </ font>, $ 2 + 4 + 6 + C'est le résultat calculé comme suit: 8 = $ $ \ bf {20} $ </ font>.
x
, qui était shape = (3,4,2), devient shape = (3,2) avec x.sum (axis = 1)
.
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)
Résultat d'exécution
[ [ 3 7 11 15]
[19 23 27 31]
[35 39 43 47] ]
En spécifiant ʻaxis = 2, les éléments sont additionnés dans la ** direction du canal ** s'il s'agit d'une image. Le premier élément supérieur gauche
3 du résultat d'exécution ci-dessus est $ 1 + 2 = $ <font color = 'red'> $ \ bf {3} $ </ font>, et l'élément inférieur droit
47` est $ 23 + 24 = C'est le résultat calculé comme suit: $ $ \ bf {47} $ </ font>.
x
, qui était shape = (3,4,2), devient shape = (3,4) with x.sum (axis = 2)
.
À partir de NumPy 1.7, l'axe peut être spécifié comme un taple.
En spécifiant ʻaxis = (0,1) , ** le total des lignes et des colonnes ** est calculé. Le résultat est le même même si ʻaxis = (1,0)
(l'ordre n'a pas d'importance).
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)
Résultat d'exécution
[144 156]
Le premier élément «144» du résultat de l'exécution est le résultat du calcul de la somme de tous les éléments de «x [:,:, 0]», soit $ 1 + 3 + 5 + 7 + \ cdots + 19 + 21 + 23 $. Devenir.
x
, qui était shape = (3,4,2), devient shape = (2,) with x.sum (axis = (0,1))
.
La même chose est vraie pour ʻaxis = (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)
Résultat d'exécution
[ 36 100 164]
Le premier élément 36
du résultat de l'exécution est la somme des éléments dans le cadre bleu dans la figure ci-dessous **, c'est-à-dire que $ (1 + 3 + 5 + 7) + (2 + 4 + 6 + 8) $ est calculé. Le résultat est.
x
, qui était shape = (3,4,2), devient shape = (3,) with x.sum (axis = (1,2))
.
La même chose est vraie pour ʻ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)
Résultat d'exécution
[57 69 81 93]
Le premier élément «57» du résultat de l'exécution est le résultat du calcul du ** total des éléments dans le cadre bleu ** dans la figure ci-dessous, c'est-à-dire $ (1 + 9 + 17) + (2 + 10 + 18) $. ..
x
, qui était shape = (3,4,2), devient shape = (4,) with x.sum (axis = (0,2))
.
sum (axis = (0,1,2))
est identique à sum (axis = None) ʻou
sum () ʻet la somme de tous les éléments est calculée.
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)
Résultat d'exécution
300
x
, qui était shape = (3,4,2), devient shape = (0) with x.sum (axis = (0,1,2))
.
Recommended Posts