[PYTHON] Lassen Sie es uns tun, indem Sie numpy teilen, ohne die for-Anweisung zu verwenden

Wenn Sie auf einer bestimmten Achse normalisieren möchten

Wenn die Skala für jede Achse unterschiedlich ist und beim gemeinsamen Vergleich zusammenbricht, möchte ich jede Achse durch den Maximalwert oder den Gesamtwert teilen, um sie zu normalisieren und zu vergleichen. Sie können es mit der for-Anweisung tun, aber Sie können es leicht mit ** keepdims = True ** tun. Ich habe eine Achse nach "sum" hinzugefügt, aber ** keepdims ** kann dasselbe tun. Ich habe das Gefühl, dass es etwas dafür gibt.

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]Gleich wie. 
nAAA = AAA / sAAA
print("\nsAAA.shape=", sAAA.shape)
print("\nnAAA=", nAAA)

mAAA = AAA.max(1, keepdims=True)
# mAAA = AAA.max(1)[:, np.newaxis]Gleich wie
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

Lassen Sie es uns tun, indem Sie numpy teilen, ohne die for-Anweisung zu verwenden
Lassen Sie uns dies tun, indem wir numpy multiplizieren, ohne die for-Anweisung zu verwenden
Suchen Sie mit Pythonista3 nach einem Bild von der Kamerarolle
Grundlegendes zur Python-Klasse Kampf (1) Verschieben wir sie vorerst
Lassen Sie uns die Karte mit der Grundkarte anzeigen
[Python] Neunundneunzig Tabellen, die for-Anweisungen verwenden
Zum ersten Mal in Numpy werde ich es von Zeit zu Zeit aktualisieren
Ich dachte, es wäre langsam, die for-Anweisung in NumPy zu verwenden, aber das war nicht der Fall.