Ce face np.stack()
np.stack() pune tablouri de aceeași formă unul peste altul pe o axă nouă: din trei vectori de 4 elemente obții un tablou cu forma (3, 4) cu axis=0 sau (4, 3) cu axis=1. Spre deosebire de np.concatenate(), numărul de dimensiuni crește cu 1.
np.vstack() pune tablourile unul sub altul (rânduri); un vector 1D este tratat ca un rând. np.hstack() le pune unul lângă altul: pentru vectori 1D rezultatul este un vector mai lung, pentru tablouri 2D se adaugă coloane. np.column_stack() transformă fiecare vector 1D într-o coloană și le pune alături, util când ai coloane separate (nume de câmpuri) și vrei un tabel.
Parametri
| Parametru | Descriere |
|---|---|
tablouri |
O listă sau un tuplu de tablouri. |
axis |
La np.stack: poziția axei noi în rezultat (implicit 0). |
Ce returnează
Un tablou nou.
Exemple
Exemplul 1: stack pe axa 0 și pe axa 1
import numpy as np
ana = np.array([9, 8, 10, 7])
mihai = np.array([6, 7, 5, 8])
print(np.stack((ana, mihai)))
print(np.stack((ana, mihai)).shape)
print(np.stack((ana, mihai), axis=1).shape)
Rezultat
[[ 9 8 10 7]
[ 6 7 5 8]]
(2, 4)
(4, 2)
Exemplul 2: vstack și hstack
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(np.vstack((a, b)))
print(np.hstack((a, b)))
m = np.array([[1, 2], [3, 4]])
print(np.hstack((m, np.array([[9], [9]]))))
Rezultat
[[1 2 3]
[4 5 6]]
[1 2 3 4 5 6]
[[1 2 9]
[3 4 9]]
Exemplul 3: Un tabel din coloane separate cu column_stack
Fiecare vector devine o coloană: cantitate, preț unitar și total.
import numpy as np
cantitate = np.array([2, 5, 1])
pret = np.array([4.5, 7.0, 12.0])
tabel = np.column_stack((cantitate, pret, cantitate * pret))
print(tabel)
print(tabel.shape)
Rezultat
[[ 2. 4.5 9. ]
[ 5. 7. 35. ]
[ 1. 12. 12. ]]
(3, 3)
Greșeli frecvente
- Folosești
np.stack()pe tablouri de lungimi diferite: toate trebuie să aibă exact aceeași formă, altfel primeștiValueError. - Folosești
np.hstack()pe doi vectori 1D și te aștepți la două coloane; primești un singur vector lung. Pentru coloane foloseștenp.column_stack(). - Confunzi
np.stackcunp.concatenate:stackadaugă o dimensiune nouă,concatenatelungește una existentă.
Comenzi înrudite
np.concatenate(): Lipește mai multe tablouri unul după altul pe o axă existentă (axis=0 adaugă rânduri, axis=1 adaugă coloane).np.split(): Împarte un tablou în mai multe bucăți: în părți egale (np.split), aproape egale (np.array_split) sau la anumiți indici.ndarray.reshape(): Schimbă forma unui tablou (de exemplu din 12 elemente în 3 x 4) fără să-i schimbe datele.ndarray.shape: Află forma unui tablou (rânduri, coloane), numărul de dimensiuni și numărul total de elemente.