Maison  >  Article  >  développement back-end  >  Comment utiliser np.vstack() et np.hstack() en Python

Comment utiliser np.vstack() et np.hstack() en Python

PHPz
PHPzavant
2023-04-18 13:04:032597parcourir

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer