ndarray.astype() în NumPy

Convertește elementele unui tablou într-un alt tip, de exemplu din float în int sau din text în număr.

Sintaxă
a.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)

Ce face ndarray.astype()

astype() returnează un tablou nou cu elementele convertite la tipul cerut. Tabloul inițial rămâne neschimbat.

La conversia din float în int partea zecimală este tăiată, nu rotunjită: 2.9 devine 2, iar -2.9 devine -2. Dacă vrei rotunjire, aplică întâi np.round().

Implicit copy=True, deci se face mereu o copie. Cu copy=False, dacă tipul este deja cel cerut, primești chiar tabloul inițial, fără copie.

Parametri

Parametru Descriere
dtype Tipul nou: int, float, bool, str, "int32" etc.
casting Cât de permisivă este conversia. Implicit 'unsafe': orice conversie este permisă. Cu 'safe' sunt permise doar conversiile fără pierdere.
copy Implicit True. Cu False, copia se evită când tipul este deja cel cerut.

Ce returnează

Un tablou cu elementele convertite (sau chiar tabloul inițial, cu copy=False și același tip).

Exemple

Exemplul 1: Float în int trunchiază

import numpy as np

medii = np.array([8.75, 9.5, 6.2, -2.9])
print(medii.astype(int))
print(np.round(medii).astype(int))
print(medii)

Rezultat

[ 8  9  6 -2]
[ 9 10  6 -3]
[ 8.75  9.5   6.2  -2.9 ]

Exemplul 2: Text în număr și număr în bool

Prețurile citite ca text se transformă în numere. La bool, doar 0 devine False.

import numpy as np

preturi_text = np.array(["12.5", "30", "7.25"])
preturi = preturi_text.astype(float)
print(preturi, preturi.sum())

stoc = np.array([3, 0, 12, 0])
print(stoc.astype(bool))

Rezultat

[12.5  30.    7.25] 49.75
[ True False  True False]

Exemplul 3: copy=False

import numpy as np

a = np.array([1, 2, 3])
b = a.astype(np.int64, copy=False)
c = a.astype(np.int64)
print("b este a:", b is a)
print("c este a:", c is a)

Rezultat

b este a: True
c este a: False

Greșeli frecvente

  • Te aștepți ca astype(int) să rotunjească. Partea zecimală este tăiată: folosește np.round(a).astype(int).
  • Apelezi a.astype(float) fără să păstrezi rezultatul. Metoda nu modifică tabloul; scrie a = a.astype(float).
  • Convertești în int un tablou cu np.nan: NaN nu are echivalent întreg, NumPy afișează un RuntimeWarning și valoarea rezultată nu are sens. Tratează întâi valorile lipsă.

Comenzi înrudite

  • ndarray.dtype: Arată tipul elementelor dintr-un tablou (int64, float64, bool etc.) și câți octeți ocupă fiecare.
  • Operații element cu element și ufunc-uri: Operatorii aritmetici și funcțiile matematice NumPy (ufunc-uri) se aplică pe fiecare element, fără bucle.
  • np.nan și funcțiile nan*: Lucrul cu valori lipsă: np.nan, np.isnan și funcțiile nansum, nanmean, nanmin, nanmax care ignoră NaN.