Ce face np.concatenate()
np.concatenate() primește o listă sau un tuplu de tablouri și le lipește pe o axă care există deja. Pentru tablouri 1D rezultatul este un tablou mai lung. Pentru tablouri 2D, axis=0 (implicit) pune rândurile unui tablou sub ale celuilalt, iar axis=1 pune coloanele alături.
Tablourile trebuie să aibă același număr de dimensiuni și aceeași lungime pe toate axele, în afară de cea de lipire. Altfel primești ValueError. Cu axis=None, tablourile sunt aplatizate înainte de lipire.
Parametri
| Parametru | Descriere |
|---|---|
(a1, a2, ...) |
Tablourile de lipit, într-o listă sau un tuplu. |
axis |
Axa de lipire; implicit 0. None aplatizează tablourile. |
dtype |
Tipul tabloului rezultat (NumPy 1.20+). |
Ce returnează
Un tablou nou.
Exemple
Exemplul 1: Lipirea a două tablouri 1D
import numpy as np
trim1 = np.array([1200, 950, 1430])
trim2 = np.array([1100, 1600, 1550])
an = np.concatenate((trim1, trim2))
print(an)
print(an.shape)
Rezultat
[1200 950 1430 1100 1600 1550]
(6,)
Exemplul 2: Rânduri noi și coloane noi
import numpy as np
iasi_cluj = np.array([[12, 15], [20, 18]])
brasov = np.array([[8, 9]])
martie = np.array([[11], [22]])
print(np.concatenate((iasi_cluj, brasov), axis=0))
print(np.concatenate((iasi_cluj, martie), axis=1))
Rezultat
[[12 15]
[20 18]
[ 8 9]]
[[12 15 11]
[20 18 22]]
Exemplul 3: Forme care nu se potrivesc
Un rând cu 3 valori nu poate fi pus sub rânduri cu 2 valori.
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6, 7]])
try:
np.concatenate((a, b))
except ValueError as e:
print("Eroare:", e)
Rezultat
Eroare: all the input array dimensions except for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 2 and the array at index 1 has size 3
Greșeli frecvente
- Dai tablourile ca argumente separate:
np.concatenate(a, b). Al doilea argument esteaxis; tablourile se pun într-o listă sau un tuplu:np.concatenate((a, b)). - Încerci să adaugi un rând 1D (
np.array([8, 9])) la un tablou 2D: au număr diferit de dimensiuni. Fă-l 2D cu[[8, 9]]sau foloseștenp.vstack(). - Adaugi câte un element într-o buclă cu
np.concatenate: fiecare apel copiază tot tabloul. Strânge valorile într-o listă Python și transformă lista la final.
Comenzi înrudite
np.stack(): Combină tablouri pe o axă nouă (np.stack), pe verticală (vstack), pe orizontală (hstack) sau ca și coloane (column_stack).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.