Maison  >  Article  >  développement back-end  >  méthode numpy.transpose pour transposer des tableaux tridimensionnels

méthode numpy.transpose pour transposer des tableaux tridimensionnels

不言
不言original
2018-04-17 15:33:003901parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn