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

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

PHPz
Libérer: 2023-04-18 13:04:03
avant
2626 Les gens l'ont consulté

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))
Copier après la connexion

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]))
Copier après la connexion

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]))
Copier après la connexion

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]]))
Copier après la connexion

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]]))
Copier après la connexion

(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]))
Copier après la connexion

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]]))
Copier après la connexion

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]]))
Copier après la connexion

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)
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal