Ce qui suit est un article sur la méthode de transposition de numpy.transpose pour les tableaux tridimensionnels. Elle a une bonne valeur de référence et j'espère qu'elle sera utile à tout le monde. Venez jeter un oeil ensemble
comme suit :
import numpy as np
Tableau tridimensionnel
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]]]
La séquence positive est (0, 1, 2), et le tableau est
#[[[ 0 1 2 3] # [ 4 5 6 7]] # [[ 8 9 10 11] # [12 13 14 15]]]
Pourquoi après avoir entré tanspose (1, 0, 2), le tableau devient
#[[[ 0 1 2 3] # [ 8 9 10 11]] # # [[ 4 5 6 7] # [12 13 14 15]]]
Après une observation attentive, vous pouvez voir que la différence entre le tableau transposé et le tableau pré-transposé est que la deuxième ligne de la première page et la première ligne de la deuxième les pages sont échangées, mais pourquoi ?
Quand j'utilise arr1[0,1,0], la valeur de l'index est 4
Quand j'utilise arr2[1,0,0], l'index La valeur est 4
Il semble y avoir un lien entre les changements dans la table des paramètres d'index et la différence entre l'ordre positif et l'ordre transposé
Pour le tableau arr1, le La table des paramètres d'index [0, 0, x ] peut représenter la première ligne de la première page. Une fois les deux paramètres actuels échangés, la table des paramètres d'index du même élément n'a pas changé
Par conséquent, la première ligne. de la première page de arr2 et de la première page de arr1 La première ligne est la même
Pour le tableau arr1, la table des paramètres d'index [0, 1, x] peut représenter la deuxième ligne de la première page. Une fois les deux paramètres actuels échangés, la valeur d'index du même élément est telle que [0, 1, 0] devient [1, 0, 0],
Cela explique la différence dans la table des paramètres d'index de valeur d'index 4
C'est probablement l'idée, donc transpose(1,0,2), la deuxième ligne de la première page du tableau et la première les rangées de la deuxième page sont inversées
Les quatre méthodes de transposition suivantes sont également à peu près celles-ci. Si vous regardez attentivement l'idée, elle ne devrait pas être difficile à comprendre
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]]]
Ce qu'il convient de noter ici, c'est que le tableau arr4 devient 4 pages. En effet, le numéro de page et après l'échange de code de ligne, le numéro de page
est passé de 2. à 4
et le code de ligne est passé de 4 à 2
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]]]
De plus, transposer (2, 0, 1) peut être vu comme, d'abord transposer (0, 2, 1) puis transposer ( 1, 0, 2)
Transposer (2, 1, 0) peut être vu comme transposer (1, 0, 2) d'abord, puis transposer (0, 2, 1), et enfin transposer (1, 0, 2)
Transposer (1, 2, 0) peut être vu comme transposer ( 1, 0, 2) d'abord, puis en transposant (0, 2, 1)
Le code peut s'écrire
arr4=arr1.transpose(0,2,1).transpose(1,0,2)
#[[[ 0 4] # [ 8 12]] # # [[ 1 5] # [ 9 13]] # # [[ 2 6] # [10 14]] # # [[ 3 7] # [11 15]]]
Le résultat est le même !
Recommandations associées :
La différence entre un tableau et un tableau dans numpy
Comment gérer les tableaux booléens dans numpy
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!