Il metodo dtype di Python Numpy
Il metodo dtype della libreria NumPy di Python mi permette di capire il tipo di dati di un oggetto array.
x.dtype
L'argomento x è un oggetto di tipo array.
Posso anche usare dtype come attributo della funzione array().
array(x, dtype=tipo)
Se usato come attributo dtype definisce il tipo di dati dell'array al momento della creazione, indipendentemente dai valori che contiene.
Un esempio pratico
Esempio 1
Importo la libreria numpy e creo un array.
>>> import numpy as np
>>> M=np.array([1,2,3,3.1,4])
Il vettore è composto da quattro numeri interi (1,2,3,4) e un numero decimale (3.1).
Poi uso il metodo dtype per vedere il tipo di dati dell'array
>>> M.dtype
L'oggetto contiene valori numerici a virgola mobile a 64 bit ( float64 ).
dtype('float64')
A differenza delle liste, un array deve avere tutti gli elementi omogenei, dello stesso tipo.
Essendoci un valore decimale (3.1) tutti i dati sono definiti a virgola mobile.
>>> M
array([1. , 2. , 3. , 3.1, 4. ])
I valori inizialmente interi sono stati trasformati automaticamente nel formato a virgola mobile.
Esempio 2
Con l'attributo dtype posso imporre un particolare tipo di dato quando creo un array.
In questo esempio definisco l'array di tipo intero con l'attributo dtype.
>>> M=np.array([1,2,3,3.1,4], dtype=int)
Poi visualizzo il suo contenuto del vettore
>>> M
array([1, 2, 3, 3, 4])
Il valore decimale (3.1) è stato automaticamente convertito in numero intero.
A questo punto verifico il tipo di dato dell'array con il metodo dtype.
M.dtype
Il metodo mi restituisce il tipo di dato
dtype('int32')
L'array contiene valori numerici interi a 32 bit.
Quali sono i tipi di dati
Le principali tipologie di dati di un array di NumPy sono:
- int interi
- uint interi positivi ( non negativi )
- float virgola mobile
- bool booleani ( vero o falso )
- complex complessi
A ogni tipo di dato, a parte quello booleano, è anche specificato un livello di precisione.
8 bit | 16 bit | 32 bit | 64 bit | 128 bit | 256 bit | |
---|---|---|---|---|---|---|
int | int8 | int16 | int32 | int64 | ||
uint | uint8 | uint16 | uint32 | uint64 | ||
float | float16 | float32 | float64 | float128 | ||
complex | complex64 | complex128 | complex256 |
E così via.