ndarray.T și np.transpose() în NumPy

Transpune un tablou: rândurile devin coloane și coloanele devin rânduri.

Sintaxă
a.T
np.transpose(a, axes=None)
a.transpose(*axes)

Ce face ndarray.T și np.transpose()

a.T întoarce un tablou 2D: elementul de pe rândul i, coloana j ajunge pe rândul j, coloana i. Un tablou de formă (2, 3) devine (3, 2).

np.transpose(a) face același lucru. Cu axes alegi ordinea axelor pentru tablouri cu mai mult de două dimensiuni.

Rezultatul este o vedere: nu se copiază datele. Pe un tablou 1D, .T nu schimbă nimic.

Parametri

Parametru Descriere
a Tabloul de transpus.
axes Opțional. Noua ordine a axelor, de exemplu (1, 0, 2). Implicit ordinea inversă.

Ce returnează

O vedere a tabloului, cu axele inversate (sau în ordinea din axes).

Exemple

Exemplul 1: Magazine pe rânduri, apoi pe coloane

import numpy as np

vanzari = np.array([[120, 95, 130],
                    [80, 110, 105]])
print(vanzari.shape)
print(vanzari.T)
print(vanzari.T.shape)

Rezultat

(2, 3)
[[120  80]
 [ 95 110]
 [130 105]]
(3, 2)

Exemplul 2: np.transpose cu axes

Un tablou 3D de formă (2, 3, 4) cu ordinea axelor schimbată.

import numpy as np

a = np.zeros((2, 3, 4))
print(np.transpose(a).shape)
print(np.transpose(a, (1, 0, 2)).shape)

Rezultat

(4, 3, 2)
(3, 2, 4)

Exemplul 3: Pe un tablou 1D nu are efect

Pentru o coloană din tablou 1D, schimbă forma cu reshape(-1, 1).

import numpy as np

note = np.array([9, 7, 10])
print(note.T, note.T.shape)
print(note.reshape(-1, 1))

Rezultat

[ 9  7 10] (3,)
[[ 9]
 [ 7]
 [10]]

Greșeli frecvente

  • Aștepți ca .T să transforme un tablou 1D în coloană. Forma (3,) rămâne (3,); folosește reshape(-1, 1) sau a[:, np.newaxis].
  • Scrii a.T() cu paranteze. T este atribut; metoda este a.transpose().
  • Modifici rezultatul lui .T și uiți că este o vedere: se schimbă și tabloul inițial.

Comenzi înrudite

  • 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.
  • np.matmul() și operatorul @: Înmulțirea de matrice cu np.matmul sau operatorul @; diferența față de *, care înmulțește element cu element.
  • 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.