Heim > Artikel > Backend-Entwicklung > numpy.transpose-Methode zum Transponieren dreidimensionaler Arrays
Das Folgende ist ein Artikel über die Transpositionsmethode von numpy.transpose für dreidimensionale Arrays. Er hat einen guten Referenzwert und ich hoffe, dass er für alle hilfreich sein wird. Kommen Sie vorbei und schauen Sie sich gemeinsam
wie folgt um:
import numpy as np
Dreidimensionales Array
arr1 = np.arange(16).reshape((2, 2, 4)) #[[[ 0 1 2 3] # [ 4 5 6 7]] # [[ 8 9 10 11] # [12 13 14 15]]] arr2=arr1.transpose((1,0,2)) #[[[ 0 1 2 3] # [ 8 9 10 11]] # # [[ 4 5 6 7] # [12 13 14 15]]]
Die positive Sequenz ist (0, 1, 2), und das Array ist
#[[[ 0 1 2 3] # [ 4 5 6 7]] # [[ 8 9 10 11] # [12 13 14 15]]]
Warum nach der Eingabe von tanspose (1, 0, 2) das Array zu
#[[[ 0 1 2 3] # [ 8 9 10 11]] # # [[ 4 5 6 7] # [12 13 14 15]]]Nach sorgfältiger Beobachtung können Sie erkennen, dass der Unterschied zwischen dem transponierten Array und dem vortransponierten Array darin besteht, dass die zweite Zeile der ersten Seite und die erste Zeile der zweiten Seite Seite werden vertauscht, aber warum?
Wenn ich arr1[0,1,0] verwende, ist der Indexwert 4
Wenn ich arr2[1,0,0] verwende, der Index Der Wert ist 4
Es scheint einen Zusammenhang zwischen den Änderungen in der Indexparametertabelle und dem Unterschied zwischen positiver Reihenfolge und transponierter Reihenfolge zu gebenFür das arr1-Array gilt das Die Indexparametertabelle [0, 0, x] kann die erste Zeile der ersten Seite darstellen. Nachdem die beiden aktuellen Parameter ausgetauscht wurden, hat sich die Indexparametertabelle desselben Elements nicht geändert. Daher die erste Zeile der ersten Seite von arr2 und der ersten Seite von arr1 Die erste Zeile ist gleich Für das Array arr1 kann die Indexparametertabelle [0, 1, x] die zweite Zeile der ersten Seite darstellen. Nachdem die beiden aktuellen Parameter ausgetauscht wurden, ist der Indexwert desselben Elements z. B. [0, 1, 0] wird zu [1, 0, 0],Dies erklärt den Unterschied in der Indexparametertabelle des Indexwerts 4
Das ist wahrscheinlich die Idee, also transpose(1,0,2), die zweite Zeile der ersten Seite des Arrays und die erste Zeile der zweiten Seite werden vertauschtDie folgenden vier Transpositionsmethoden sind ungefähr auch so. Wenn Sie sich die Idee genau ansehen, sollte es nicht schwer sein, sie zu verstehenarr3=arr1.transpose((0,2,1)) # [[[ 0 4] # [ 1 5] # [ 2 6] # [ 3 7]] # # [[ 8 12] # [ 9 13] # [10 14] # [11 15]]] arr4=arr1.transpose((2,0,1)) #[[[ 0 4] # [ 8 12]] # # [[ 1 5] # [ 9 13]] # # [[ 2 6] # [10 14]] # # [[ 3 7] # [11 15]]]Hier ist zu beachten, dass das arr4-Array 4 Seiten lang wird. Dies liegt daran, dass sich die Seitennummer und die Seitennummer
von 2 geändert haben auf 4
und der Leitungscode wurde von 4 auf 2 geändert
arr5=arr1.transpose((2,1,0)) #[[[ 0 8] # [ 4 12]] # # [[ 1 9] # [ 5 13]] # # [[ 2 10] # [ 6 14]] # # [[ 3 11] # [ 7 15]]] arr6=arr1.transpose((1,2,0)) #[[[ 0 8] # [ 1 9] # [ 2 10] # [ 3 11]] # # [[ 4 12] # [ 5 13] # [ 6 14] # [ 7 15]]]Außerdem transponieren (2, 0, 1) kann wie folgt angesehen werden: zuerst transponieren (0, 2, 1) und dann transponieren ( 1, 0, 2) Transponieren (2, 1, 0) kann gesehen werden als Zuerst transponieren (1, 0, 2), dann transponieren (0, 2, 1) und schließlich transponieren (1, 0, 2) Transponieren (1, 2, 0) kann als Transponieren ( 1, 0, 2) zuerst, dann transponieren (0, 2, 1)
Der Code kann als
arr4=arr1.transpose(0,2,1).transpose(1,0,2)geschrieben werden
#[[[ 0 4] # [ 8 12]] # # [[ 1 5] # [ 9 13]] # # [[ 2 6] # [10 14]] # # [[ 3 7] # [11 15]]]Das Ergebnis ist das gleiche! Verwandte Empfehlungen:
Der Unterschied zwischen Array und Asarray in Numpy
Wie man mit booleschen Arrays in Numpy umgeht
Das obige ist der detaillierte Inhalt vonnumpy.transpose-Methode zum Transponieren dreidimensionaler Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!