J'ai une matrice 3D x_test
de taille (100, 33, 66)
et je veux changer ses dimensions en (100, 66, 33)
.
Quel est le moyen le plus efficace de faire cela en utilisant python3.5 ? Je cherche quelque chose de ce genre :
y = x_test.transpose()
J'ai une matrice 3D x_test
de taille (100, 33, 66)
et je veux changer ses dimensions en (100, 66, 33)
.
Quel est le moyen le plus efficace de faire cela en utilisant python3.5 ? Je cherche quelque chose de ce genre :
y = x_test.transpose()
Vous pouvez passer les dimensions souhaitées à la fonction np.transpose
en utilisant dans votre cas np.transpose(x_test, (0, 2, 1))
.
Par exemple,
import numpy as np
x_test = np.arange(30).reshape(3, 2, 5)
print(x_test)
print(x_test.shape)
Ceci imprimera
[[[ 0 1 2 3 4]
[ 5 6 7 8 9]]
[[10 11 12 13 14]
[15 16 17 18 19]]
[[20 21 22 23 24]
[25 26 27 28 29]]]
(3, 2, 5)
Maintenant, vous pouvez transposer la matrice avec la commande ci-dessus
y = np.transpose(x_test, (0, 2, 1))
print(y)
print(y.shape)
ce qui donnera
[[[ 0 5]
[ 1 6]
[ 2 7]
[ 3 8]
[ 4 9]]
[[10 15]
[11 16]
[12 17]
[13 18]
[14 19]]
[[20 25]
[21 26]
[22 27]
[23 28]
[24 29]]]
(3, 5, 2)
En dehors de transpose
(voir la réponse de @Cleb), il y a aussi swapaxes
y moveaxis
:
import numpy as np
mock = np.arange(30).reshape(2,3,5)
mock.swapaxes(1,2)
# array([[[ 0, 5, 10],
[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14]],
[[15, 20, 25],
[16, 21, 26],
[17, 22, 27],
[18, 23, 28],
[19, 24, 29]]])
np.moveaxis(mock,2,1)
# array([[[ 0, 5, 10],
[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14]],
[[15, 20, 25],
[16, 21, 26],
[17, 22, 27],
[18, 23, 28],
[19, 24, 29]]])
Np.rot90 est une autre option. J'avoue ne pas encore comprendre la notation axes = (a, b) et trier toutes les combinaisons de (0, 1) à (2, 1) pour trouver ce que je veux. En utilisant le x_test ci-dessus, notez sa forme originale (3, 2 ,5) :
x2 = np.rot90(x_test, axes = (0, 1))
array([[[ 5, 6, 7, 8, 9],
[15, 16, 17, 18, 19],
[25, 26, 27, 28, 29]],
[[ 0, 1, 2, 3, 4],
[10, 11, 12, 13, 14],
[20, 21, 22, 23, 24]]])
x2.shape
(2, 3, 5)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.