Tipps zum Nachdenken über np.newaxis in Python / Numpy

Einführung

Python ist eine Programmiersprache, die häufig in der Forschung zum maschinellen Lernen verwendet wird. Insbesondere wenn Sie es im Bereich der Grundlagenforschung einsetzen möchten, wird dies häufig schwierig. Dies liegt daran, dass das Schreiben vieler for-Anweisungen langsamer wird. Wenn Sie also versuchen, Ihr Bestes zu geben, ohne eine for-Anweisung zu schreiben, werden Sie auf verschiedene Probleme stoßen, aber ich möchte Ihnen die Verwendung von np.newaxis vorstellen, mit der ich Probleme hatte. Sie werden häufig darauf stoßen, wenn Sie mit verschiedenen Parametern experimentieren möchten.

[Python] Numpy Reference, Extraction, Join Indexing - docs.scipy.org

Hauptgeschichte

1. Lassen Sie uns zunächst die zu verwendenden Daten verstehen

Zunächst ist es eine gute Idee, herauszufinden, welche Art von Daten Sie haben und welche Ziele Sie erreichen möchten. Denken Sie daran, welche Art von Daten, welche Form das Array hat und welche Dimension es hat.

Betrachten Sie der Einfachheit halber die folgende Situation.

init.py


import numpy as np
assert a.shape == (N,)  # ndarray
assert b.shape == (N, K)  # ndarray

a+b_ex.png

a+b_but.PNG

Wenn Sie dies mit einer for-Anweisung schreiben,

naive.py


c = np.zeros(N, K)
for k in range(K):
    c[:, k] = a + b[:, k]

Ich möchte jedoch nicht so viel wie möglich eine for-Anweisung schreiben. Sie können auch einfach "a + b" ausführen, dies wird jedoch überhaupt nicht in der Lage sein, komplizierte Probleme zu lösen.

2. Denken Sie über Ihre Ziele nach.

Das Ziel dieses Mal ist es, "a + b" für jede der "K" b "Proben zu machen und die Ergebnisse für jede Probe zu erhalten. Definieren wir die Form des Endergebnisses = (Anordnung der Ziele).

goal.py


c = np.zeros(N, K)
hogehoge()
assert c.shape == (N, K)

Es wird so sein.

3. Fügen Sie np.newaxis ein

Dies ist, was passiert, wenn Sie normalerweise "a + b" in Ihren Kopf setzen,

a+b.PNG

Ich weiß nicht, wie ich berechnen soll, weil "b" ein zweidimensionales Array mit mehreren Abtastwerten ist.

a+b_but.PNG

Lassen Sie mich Ihnen Anweisungen zur Berechnung geben. Das ist np.newaxis. Eigentlich ist die Substanz von "np.newaxis" "None", aber verwenden wir "np.newaxis", ohne sich zu viele Sorgen zu machen. Wenn eine Operation (hier +) ausgeführt wird, bei der das Array dieselbe Form haben muss, werden wir von hier aus anweisen, "Bitte machen Sie dieselbe Form". Erstens ist die Dimension des Arrays "a.shape == (N,)", also setzen wir es zumindest auf "a.shape == (N, 1)". Verwenden Sie dazu a [:, np.newaxis]. Diese Operation ermöglicht es Numpy, automatisch aus dem anderen Argument des Operators zu bestimmen, das sich von "(N, 1)" bis "(N, K)" erstreckt und die Berechnung durchführt.

a+b=c.PNG

add_samples.py


import numpy as np
assert a.shape == (N,)  # ndarray
assert b.shape == (N, K)  # ndarray

# a[:, (Nicht genug hier)] 
c = a[:, np.newaxis] + b[:, :]
assert c.shape == (N, K)  #Lassen Sie uns gleichzeitig die Rolle der Fehlerprüfung und des Memos übernehmen

Zusammenfassung

Auf diese Weise erleichtert ein ruhiges Verständnis dessen, was Numpy automatisch tut, die Bewältigung komplexer Probleme.

Recommended Posts

Tipps zum Nachdenken über np.newaxis in Python / Numpy
Python- und Numpy-Tipps
Python-Tipps
numpy tipps
Python-Tipps
Python-Tipps
Mein Numpy (Python)
Tipps zum Python-Debuggen
Python-Klick-Tipps
Unerwartet (?) Python Bean Wissen
# Python-Grundlagen (#Numpy 1/2)
# Python-Grundlagen (#Numpy 2/2)
Python #Numpy Basics
[Python] Numpy Memo
Python Basic 8 Numpy Test
[Python] Suche (NumPy) ABC165C
Berechnung des Python-Numpy-Arrays
Python-Tipps (mein Memo)
Tipps zur Installation von Python PyTorch
[Python] Numpy Daten sortieren
Python Basic - Pandas, Numpy -
[Tipps] Differenzberechnung erster Ordnung und inverse Konvertierung [Python / Numpy]
Konvertieren Sie numpy int64 in python int
[Python] Berechnungsmethode mit numpy
SMO mit Python + NumPy implementiert
Empfangen von Standardeingabetipps @ python
Matrixprodukt in Python numpy
[Tipps] Behandle Athena mit Python
Erstellen Sie ein Python-Numpy-Array
[Python + Selen] Tipps zum Scraping
Google Drive API-Tipps (Python)
~ Tipps für Python-Anfänger mit Liebe von Pythonista ③ ~
[Python] Numpy Referenz, Extraktion, Kombination
Ich denke daran, Python zu studieren
Indexierter Zugriff auf das Python-Numpy-Array
Einführung in die Python Numerical Calculation Library NumPy
Tipps zur Eingabe / Ausgabe von Python-Dateien
[Einführung in Python] <numpy ndarray> [edit: 2020/02/22]
Setzen Sie Python, Numpy, OpenCV3 in Ubuntu14
Selbstorganisierende Karte in der Python NumPy-Version
[TouchDesigner] Tipps für die Anweisung von Python
Tipps zum Aufrufen von Python von C.
Python-Anwendung: Numpy Teil 3: Double Array
Schreiben Sie Python-Liste schnell vim Tipps
[Docker] Python3.5 + Numpy + Matplotlib-Umgebungskonstruktion