[PYTHON] Faisons-le en divisant numpy sans utiliser l'instruction for

Lorsque vous souhaitez normaliser sur un certain axe

Si l'échelle est différente pour chaque axe et qu'elle s'effondre lorsqu'elle est comparée collectivement, je voudrais diviser chaque axe par la valeur maximale ou la valeur totale pour normaliser et comparer. Vous pouvez le faire avec l'instruction for, mais vous pouvez facilement le faire avec ** keepdims = True **. J'ai ajouté un axe après sum, mais ** keepdims ** peut faire la même chose. Je sens qu'il y a quelque chose pour ça.

AAA  = np.arange(24).reshape((2,3,4)) 
print("AAA.shape=", AAA.shape)
print("AAA=", AAA)

sAAA = AAA.sum(-1, keepdims=True)
# sAAA = AAA.sum(-1)[..., np.newaxis]Pareil que. 
nAAA = AAA / sAAA
print("\nsAAA.shape=", sAAA.shape)
print("\nnAAA=", nAAA)

mAAA = AAA.max(1, keepdims=True)
# mAAA = AAA.max(1)[:, np.newaxis]Pareil que
nAAA = AAA / mAAA
print("\nmAAA.shape=", mAAA.shape)
print("\nnAAA=", nAAA)

mAAA = AAA.max((0,2), keepdims=True)
nAAA = AAA / mAAA
print("\nsAAA.shape=", sAAA.shape)
print("\nnAAA=", nAAA)
AAA.shape= (2, 3, 4)
AAA= [[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]

sAAA.shape= (2, 3, 1)

nAAA= [[[0.         0.16666667 0.33333333 0.5       ]
  [0.18181818 0.22727273 0.27272727 0.31818182]
  [0.21052632 0.23684211 0.26315789 0.28947368]]

 [[0.22222222 0.24074074 0.25925926 0.27777778]
  [0.22857143 0.24285714 0.25714286 0.27142857]
  [0.23255814 0.24418605 0.25581395 0.26744186]]]

mAAA.shape= (2, 1, 4)

nAAA= [[[0.         0.11111111 0.2        0.27272727]
  [0.5        0.55555556 0.6        0.63636364]
  [1.         1.         1.         1.        ]]

 [[0.6        0.61904762 0.63636364 0.65217391]
  [0.8        0.80952381 0.81818182 0.82608696]
  [1.         1.         1.         1.        ]]]

sAAA.shape= (2, 3, 1)

nAAA= [[[0.         0.06666667 0.13333333 0.2       ]
  [0.21052632 0.26315789 0.31578947 0.36842105]
  [0.34782609 0.39130435 0.43478261 0.47826087]]

 [[0.8        0.86666667 0.93333333 1.        ]
  [0.84210526 0.89473684 0.94736842 1.        ]
  [0.86956522 0.91304348 0.95652174 1.        ]]]

Recommended Posts

Faisons-le en divisant numpy sans utiliser l'instruction for
Faisons-le en multipliant numpy sans utiliser l'instruction for
Recherche par image de la pellicule en utilisant Pythonista3
Comprendre la classe python Struggle (1) Déplaçons-la pour le moment
Affichons la carte en utilisant Basemap
[Python] Quatre-vingt-dix-neuf tables utilisant des instructions for
Pour la première fois dans Numpy, je vais le mettre à jour de temps en temps
Je pensais qu'il serait lent d'utiliser l'instruction for dans NumPy, mais ce n'était pas le cas.