Wenn ich es versuche
numpy.newaxis
Das Ergebnis ergibt einen 2D-Plotrahmen mit einer x-Achse von 0 bis 1. Wenn ich jedoch versuche numpy.newaxis
, einen Vektor zu schneiden,
vector[0:4,]
[ 0.04965172 0.04979645 0.04994022 0.05008303]
vector[:, np.newaxis][0:4,]
[[ 0.04965172]
[ 0.04979645]
[ 0.04994022]
[ 0.05008303]]
Ist es dasselbe, außer dass es einen Zeilenvektor in einen Spaltenvektor ändert?
Was numpy.newaxis
nützt es im Allgemeinen und unter welchen Umständen sollten wir es verwenden?
python
numpy
multidimensional-array
array-broadcasting
numpy-ndarray
Yue Harriet Huang
quelle
quelle
except that it changes a row vector to a column vector?
Das erste Beispiel ist kein Zeilenvektor. Das ist ein Matlab-Konzept. In Python ist es nur ein eindimensionaler Vektor ohne Zeilen- oder Spaltenkonzept. Zeilen- oder Spaltenvektoren sind zweidimensional, wie im zweiten BeispielAntworten:
Einfach gesagt,
numpy.newaxis
wird verwendet , um die Dimension zu erhöhen , indem der bestehenden Anordnung einer weiteren Dimension , wenn verwendet einmal . So,1D- Array wird zu 2D- Array
2D- Array wird zu 3D- Array
Das 3D- Array wird zum 4D- Array
Das 4D- Array wird zum 5D- Array
und so weiter..
Hier ist eine visuelle Darstellung, die die Heraufstufung eines 1D-Arrays zu 2D-Arrays zeigt.
Szenario 1 :
np.newaxis
Dies kann nützlich sein, wenn Sie ein 1D-Array explizit in einen Zeilenvektor oder einen Spaltenvektor konvertieren möchten , wie im obigen Bild dargestellt.Beispiel:
Szenario 2 : Wenn wir Numpy Broadcasting als Teil einer Operation verwenden möchten , beispielsweise während der Addition einiger Arrays.
Beispiel:
Angenommen, Sie möchten die folgenden zwei Arrays hinzufügen:
Wenn Sie versuchen, diese einfach so hinzuzufügen, wird NumPy Folgendes auslösen
ValueError
:In dieser Situation können Sie
np.newaxis
die Dimension eines der Arrays erhöhen, damit NumPy senden kann .Fügen Sie nun hinzu:
Alternativ können Sie dem Array auch eine neue Achse hinzufügen
x2
:Fügen Sie nun hinzu:
Hinweis : Beachten Sie, dass wir in beiden Fällen das gleiche Ergebnis erzielen (wobei eines die Transponierte des anderen ist).
Szenario 3 : Dies ähnelt Szenario 1. Sie können das Array jedoch
np.newaxis
mehrmals verwenden, um es auf höhere Dimensionen zu bringen. Eine solche Operation wird manchmal für Arrays höherer Ordnung ( dh Tensoren ) benötigt.Beispiel:
Weitere Hintergrundinformationen zu np.newaxis vs np.reshape
newaxis
wird auch als Pseudoindex bezeichnet, der das temporäre Hinzufügen einer Achse zu einem Multiarray ermöglicht.np.newaxis
verwendet den Slicing Bediener das Array , während neunp.reshape
formt die Anordnung zu dem gewünschten Layout (unter der Annahme , dass die Abmessungen entsprechen, und dies ist Muss für einereshape
geschehen).Beispiel
Im obigen Beispiel haben wir eine temporäre Achse zwischen der ersten und der zweiten Achse von eingefügt
B
(um Rundfunk zu verwenden). Hier wird eine fehlende Achse ausgefülltnp.newaxis
, damit der Sendevorgang funktioniert.Allgemeiner Tipp : Sie können auch
None
anstelle von verwendennp.newaxis
; Dies sind in der Tat die gleichen Objekte .PS Siehe auch diese großartige Antwort: newaxis vs reshape, um Dimensionen hinzuzufügen
quelle
Was ist
np.newaxis
?Dies
np.newaxis
ist nur ein Alias für die Python-KonstanteNone
. Dies bedeutet, dass Sie überall dort, wo Sie verwendennp.newaxis
, auch Folgendes verwenden könnenNone
:Es ist nur aussagekräftiger, wenn Sie Code lesen, der
np.newaxis
anstelle von verwendet wirdNone
.Wie benutzt man
np.newaxis
?Das
np.newaxis
wird in der Regel beim Schneiden verwendet. Es zeigt an, dass Sie dem Array eine zusätzliche Dimension hinzufügen möchten. Die Position vonnp.newaxis
stellt dar, wo ich Dimensionen hinzufügen möchte.Im ersten Beispiel verwende ich alle Elemente aus der ersten Dimension und füge eine zweite Dimension hinzu:
Im zweiten Beispiel wird eine Dimension als erste Dimension hinzugefügt und anschließend werden alle Elemente aus der ersten Dimension des ursprünglichen Arrays als Elemente in der zweiten Dimension des Ergebnisarrays verwendet:
Ebenso können Sie mehrere verwenden
np.newaxis
, um mehrere Dimensionen hinzuzufügen:Gibt es Alternativen zu
np.newaxis
?Es gibt eine weitere sehr ähnliche Funktion in NumPy:,
np.expand_dims
mit der auch eine Dimension eingefügt werden kann:Da es jedoch nur
1
s in das Array einfügt, könnenshape
Sie auchreshape
das Array hinzufügen, um diese Dimensionen hinzuzufügen:In den meisten Fällen
np.newaxis
ist es am einfachsten, Dimensionen hinzuzufügen, aber es ist gut, die Alternativen zu kennen.Wann verwenden
np.newaxis
?In mehreren Kontexten ist das Hinzufügen von Dimensionen nützlich:
Wenn die Daten eine bestimmte Anzahl von Dimensionen haben sollen. Zum Beispiel, wenn Sie
matplotlib.pyplot.imshow
ein 1D-Array anzeigen möchten .Wenn Sie möchten, dass NumPy Arrays sendet. Durch Hinzufügen einer Dimension können Sie beispielsweise den Unterschied zwischen allen Elementen eines Arrays ermitteln :
a - a[:, np.newaxis]
. Dies funktioniert, weil NumPy-Vorgänge ab der letzten Dimension 1 gesendet werden .Hinzufügen einer erforderlichen Dimension, damit NumPy Arrays senden kann . Dies funktioniert, weil jede Dimension der Länge 1 einfach an die Länge der entsprechenden Dimension 1 des anderen Arrays gesendet wird .
1 Wenn Sie mehr über die Übertragungsregeln erfahren möchten, ist die NumPy-Dokumentation zu diesem Thema sehr gut. Es enthält auch ein Beispiel mit
np.newaxis
:quelle
Sie haben mit einer eindimensionalen Liste von Zahlen begonnen. Sobald Sie verwendet haben
numpy.newaxis
haben Sie daraus eine zweidimensionale Matrix gemacht, die aus vier Zeilen mit jeweils einer Spalte besteht.Sie können diese Matrix dann für die Matrixmultiplikation verwenden oder sie in die Konstruktion einer größeren 4 xn-Matrix einbeziehen.
quelle
newaxis
Das Objekt im Auswahltupel dient dazu , die Abmessungen der resultierenden Auswahl um eine Einheitslängenabmessung zu erweitern .Es ist nicht nur die Umwandlung der Zeilenmatrix in die Spaltenmatrix.
Betrachten Sie das folgende Beispiel:
Fügen wir nun unseren Daten eine neue Dimension hinzu:
Sie können sehen, dass
newaxis
die zusätzliche Dimension hier hinzugefügt wurde, x1 hatte Dimension (3,3) und X1_neu hat Dimension (3,1,3).Wie unsere neue Dimension es uns ermöglicht, verschiedene Operationen durchzuführen:
Wenn wir x1_new und x2 addieren, erhalten wir:
Somit
newaxis
ist nicht nur die Umwandlung von Zeile in Spaltenmatrix. Es vergrößert die Dimension der Matrix und ermöglicht es uns, mehr Operationen daran durchzuführen.quelle
ndarray
NumPy-Terminologie.