Ce face ndarray.dtype
Toate elementele unui tablou au același tip, păstrat în atributul a.dtype. Cele mai folosite sunt int64 (întregi), float64 (numere zecimale), bool (adevărat/fals) și <U… (text Unicode cu lungime maximă).
Numărul din nume arată câți biți ocupă un element: int64 are 64 de biți, adică 8 octeți. a.itemsize dă octeții unui element, iar a.nbytes octeții tuturor elementelor. Tipurile mai mici (int8, float32) economisesc memorie, dar au un interval de valori mai mic.
Tipul se alege la creare (dtype=...) sau se schimbă apoi cu astype().
Ce returnează
dtype: un obiect numpy.dtype; itemsize și nbytes: întregi (octeți).
Exemple
Exemplul 1: Tipuri deduse din date
import numpy as np
print(np.array([1, 2, 3]).dtype)
print(np.array([4.5, 7.0]).dtype)
print(np.array([True, False]).dtype)
print(np.array(["Ana", "Mihai"]).dtype)
print((np.array([9, 4, 7]) > 5).dtype)
Rezultat
int64
float64
bool
<U5
bool
Exemplul 2: Memoria ocupată
Aceleași 1000 de valori ocupă de 8 ori mai puțin ca int8 decât ca int64.
import numpy as np
a = np.zeros(1000, dtype=np.int64)
b = np.zeros(1000, dtype=np.int8)
print(a.dtype, a.itemsize, "octeți/element,", a.nbytes, "octeți total")
print(b.dtype, b.itemsize, "octeți/element,", b.nbytes, "octeți total")
Rezultat
int64 8 octeți/element, 8000 octeți total
int8 1 octeți/element, 1000 octeți total
Exemplul 3: Limitele unui tip
np.iinfo arată valoarea minimă și maximă a unui tip întreg.
import numpy as np
print(np.iinfo(np.int8).min, np.iinfo(np.int8).max)
print(np.iinfo(np.int64).max)
print(np.dtype("float32").itemsize)
Rezultat
-128 127
9223372036854775807
4
Greșeli frecvente
- Scrii
a.dtype()cu paranteze:dtypeeste atribut. - Alegi
int8pentru valori mari: intervalul este doar -128 … 127, iar calculele care îl depășesc dau rezultate greșite. - Pui un număr zecimal într-un tablou de întregi (
a[0] = 9.7): valoarea este trunchiată la 9, fără niciun avertisment.
Comenzi înrudite
ndarray.astype(): Convertește elementele unui tablou într-un alt tip, de exemplu din float în int sau din text în număr.np.array(): Creează un tablou NumPy (ndarray) dintr-o listă, o listă de liste sau alt obiect asemănător.ndarray.shape: Află forma unui tablou (rânduri, coloane), numărul de dimensiuni și numărul total de elemente.