Heim  >  Artikel  >  Backend-Entwicklung  >  numpy.transpose-Methode zum Transponieren dreidimensionaler Arrays

numpy.transpose-Methode zum Transponieren dreidimensionaler Arrays

不言
不言Original
2018-04-17 15:33:003977Durchsuche

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 geben

Fü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 vertauscht

Die folgenden vier Transpositionsmethoden sind ungefähr auch so. Wenn Sie sich die Idee genau ansehen, sollte es nicht schwer sein, sie zu verstehen

arr3=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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn