Ce face ndarray.reshape()
reshape() reașază aceleași elemente într-o altă formă. Numărul total de elemente trebuie să rămână același: 12 elemente pot deveni (3, 4), (2, 6) sau (2, 2, 3), dar nu (5, 2).
Una dintre dimensiuni poate fi -1: NumPy o calculează singur din celelalte. a.reshape(-1, 3) înseamnă „câte rânduri e nevoie, cu 3 coloane”.
Când se poate, rezultatul este o vedere (view): folosește aceeași memorie cu tabloul inițial, deci o modificare într-unul se vede și în celălalt. Parametrul copy există din NumPy 2.1.
Parametri
| Parametru | Descriere |
|---|---|
forma |
Noua formă: un tuplu sau, la metodă, numere separate (a.reshape(3, 4)). O dimensiune poate fi -1. |
order |
'C' (implicit) citește și scrie elementele pe rânduri; 'F' pe coloane. |
copy |
None (implicit): copiază doar dacă este necesar. True: copiază mereu. False: eroare dacă nu se poate fără copie. |
Ce returnează
Un tablou cu noua formă, de obicei o vedere asupra acelorași date.
Exemple
Exemplul 1: Vânzări pe 12 luni, pe trimestre
Cele 12 valori lunare devin 4 rânduri (trimestre) a câte 3 luni.
import numpy as np
luni = np.arange(1, 13) * 100
print(luni)
trimestre = luni.reshape(4, 3)
print(trimestre)
print(trimestre.shape)
Rezultat
[ 100 200 300 400 500 600 700 800 900 1000 1100 1200]
[[ 100 200 300]
[ 400 500 600]
[ 700 800 900]
[1000 1100 1200]]
(4, 3)
Exemplul 2: Dimensiunea calculată cu -1
import numpy as np
a = np.arange(12)
print(a.reshape(-1, 6))
print(a.reshape(2, -1).shape)
print(a.reshape(-1, 1).shape)
Rezultat
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]]
(2, 6)
(12, 1)
Exemplul 3: Formă incompatibilă
12 elemente nu încap într-o formă de 5 x 2. Prindem eroarea ca să vedem mesajul.
import numpy as np
a = np.arange(12)
try:
a.reshape(5, 2)
except ValueError as e:
print("Eroare:", e)
Rezultat
Eroare: cannot reshape array of size 12 into shape (5,2)
Greșeli frecvente
- Crezi că
reshapeschimbă tabloul pe loc. Returnează un tablou nou; scriea = a.reshape(3, 4). - Pui
-1pe mai multe dimensiuni:a.reshape(-1, -1)dă eroare. Doar una poate fi necunoscută. - Modifici rezultatul și te miri că s-a schimbat și tabloul inițial. Rezultatul este o vedere; folosește
.copy()dacă vrei date separate.
Comenzi înrudite
ndarray.shape: Află forma unui tablou (rânduri, coloane), numărul de dimensiuni și numărul total de elemente.ndarray.ravel() și flatten(): Transformă un tablou cu mai multe dimensiuni într-unul 1D: ravel dă o vedere când poate, flatten dă mereu o copie.ndarray.T și np.transpose(): Transpune un tablou: rândurile devin coloane și coloanele devin rânduri.Copie și vedere (copy vs view): Explică diferența dintre o vedere (aceleași date) și o copie în NumPy și cum le recunoști cu .base și np.shares_memory.
Întrebări & Exemple de Cod:
ndarray.reshape()Ai o nelămurire despre utilizarea comenzii
ndarray.reshape()sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.