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ștenp.round(a).astype(int). - Apelezi
a.astype(float)fără să păstrezi rezultatul. Metoda nu modifică tabloul; scriea = a.astype(float). - Convertești în
intun tablou cunp.nan: NaN nu are echivalent întreg, NumPy afișează unRuntimeWarningș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.