Maison > Article > développement back-end > Comment utiliser np.vstack() et np.hstack() en Python
Nous introduisons ici deux méthodes d'épissage de tableaux :
np.vstack() : empilement dans le sens vertical
np.hstack() : carrelage dans le sens horizontal
import numpy as np arr1=np.array([1,2,3]) arr2=np.array([4,5,6]) print np.vstack((arr1,arr2)) print np.hstack((arr1,arr2)) a1=np.array([[1,2],[3,4],[5,6]]) a2=np.array([[7,8],[9,10],[11,12]]) print a1 print a2 print np.hstack((a1,a2))
Les résultats sont les suivants :
[ [ 1 2 3]
[4 5 6]]
[1 2 3 4 5 6]
[[1 2]
[3 4]
[5 6]]
[[ 7 8]
[ 9 10]
[ 11 12]]
[[ 1 2 7 8]
[ 3 4 9 10]
[ 5 6 11 12]]
Il faut souligner ici que lors de l'application de hstack, je fais la mission 1 sur cs231n, j'obtiens toujours erreurs ici dans hstack ! C’est seulement à ce moment-là que j’ai réalisé que mes études précédentes étaient très superficielles !
(1)np.hstack()
Prototype de fonction : numpy.hstack(tup)
où tup est la séquence de tableaux, tup : séquence de ndarrays
Les tableaux doivent avoir la même forme tout au long mais le deuxième axe, à l'exception des tableaux 1D qui peuvent avoir n'importe quelle longueur.
Équivalent à : np.concatenate(tup, axis=1)
Exemple 1 :
import numpy as np brr1=np.array([1,2,3,4,55,6,7,77,8,9,99]) brr1_folds=np.array_split(brr1,3) print brr1_folds print brr1_folds[0:2]+brr1_folds[1:3] print np.hstack((brr1_folds[:2]+brr1_folds[1:3])) print brr1_folds[0:2] print brr1_folds[1:3] #print np.hstack((brr1_folds[0:2],brr1_folds[1:3]))
Si la dernière ligne n'est pas commentée, un une erreur se produira ;
[array([1, 2, 3, 4]), array([55, 6, 7, 77]), array([ 8, 9, 99])]
[array([ 1, 2, 3 , 4]), tableau([55, 6, 7, 77]), tableau([55, 6, 7, 77]), tableau([ 8, 9, 99])]
[ 1 2 3 4 55 6 7 77 55 6 7 77 8 9 99]
[tableau([1, 2, 3, 4]), tableau([55, 6, 7, 77])]
[tableau([55, 6, 7, 77 ]), array([ 8, 9, 99])]
La raison de l'erreur est que les dimensions de mon tableau sont incohérentes. Changez-le simplement en +. Le signe plus est l’épissage de la liste !
Exemple 2 :
print np.hstack(([1,2,3,3,4],[3,4,5,8,6,6,7]))
Le résultat est : il montre que le tableau unidimensionnel hstack est arbitraire.
[1 2 3 3 4 3 4 5 8 6 6 7]
Exemple 3 :
montre que notre hstack doit avoir la même deuxième dimension :
print np.hstack(([1,2,3,3,4],[3,4,5,8,6,6,7])) print np.hstack(([[1,2,3],[2,3,4]],[[1,2],[2,3]]))
Résultat :
[1 2 3 3 4 3 4 5 8 6 6 7]
[[1 2 3 1 2][2 3 4 2 3]]
Si vous modifiez ce qui précède par ce qui suit, une erreur sera signalée ! ! !
print np.hstack(([1,2,3,3,4],[3,4,5,8,6,6,7])) print np.hstack(([[1,2,3],[2,3,4]],[[1,2]]))
(2)np.vstack()
Prototype de fonction : numpy.hstack(tup)
tup : séquence de ndarrays
Les tableaux doivent avoir la même forme le long de tous les axes sauf le premier.1- Les tableaux D doivent avoir la même longueur.
signifie qu'à l'exception de la première dimension, nous devons avoir la même forme dans les autres dimensions. Les tableaux unidimensionnels doivent être de même taille.
Exemple 1 :
print np.vstack(([1,2,3],[3,4,3])) print np.vstack(([1,2,3],[2,3]))
Mais vous devez faire attention au fait que la deuxième ligne est fausse !
Exemple 2 :
print np.vstack(([[1,2,3],[3,4,3]],[[1,3,4],[2,4,5]])) print np.vstack(([[1,2,3],[3,4,3]],[[3,4],[4,5]]))
La même chose montre que si la deuxième dimension de notre tableau est différente, une erreur se produira.
print np.vstack(([[1,2,3],[3,4,3]],[[2,4,5]])) print np.vstack(([[1,2,3],[3,4,3]],[[4,5]]))
Exemple 3 :
Nous passons dans la liste :
import numpy as np arr1=np.array([[1,2],[2,4],[11,33],[2,44],[55,77],[11,22],[55,67],[67,89]]) arr11=np.array([[11,2,3],[22,3,4],[4,5,6]]) arr1_folds=np.array_split(arr1,3) print arr1_folds print np.vstack(arr1_folds)
Le résultat :
[array([[ 1, 2],
2, 4],
[11, 33]]), tableau ([[ 2, 44],
[55, 77],
[11, 22]]), tableau([[55, 67],
[67, 89]])]
[[ 1 2]
[ 2 4]
[11 33]
[ 2 44]
[55 77]
[11 22]
[55 67]
[67 89]]
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!