Tipo di dati array in Python
In python un array deve contenere dati omogenei. Pertanto, tutti i dati devono essere dello stesso tipo.
Generalmente, il tipo dei dati è definito automaticamente dai dati immessi nell'array.
Esempio
Definisco un array con tre numeri interi.
>>> v=np.array([1,2,3])
L'oggetto è definito in automatico come intero ( int )
array([1, 2, 3])
Ora provo a sostituire l'elemento 3 con il numero reale 3.3
>>> v=np.array([1,2,3.3])
Tutti gli elementi dell'array diventano numeri reali in virgola mobile ( float ).
array([1. , 2. , 3.3])
Come impostare il tipo di dato dell'array
Per fissare un determinato tipo di dato, posso usare la funzione array con il parametro opzionale dtype, seguito dal tipo di dato da usare.
>>> v=np.array([1. , 2. , 3.3], dtype=int)
L'array viene creato con tutti gli elementi interi, indipendentemente dal contenuto dei dati.
array([1, 2, 3])
Quali sono i tipi di dati di un array
Un array può contenere dati interi, complessi, reali, ecc.
I tipi di dati più frequenti sono:
- int
Numeri interi (integer)
(int8, int16, int32, int64) - uint
Numeri interi non negativi (unsigned)
(uint8, uint16, uint32, uint64) - bool
Valori booleani ( true o false ) - float
Numeri reali in virgola mobile
(float16, float32, float64, float128) - complex
Numeri complessi
(complex64, complex128, complex256)
Nota. I tipi di dati int, uint, float e complex hanno diverse dimensioni di dati ( o precisione ) per risparmiare memoria. I dati int e uint possono essere a 8, 16, 32 o 64 bit. I dati float a 16, 32, 64 o 128 bit. I dati complex a 64, 128 o 256 bit. Spesoso non è comunque necessario esplicitare la dimensione dei dati. Basta indicare int, uint, float e complex. Poi sarà l'interprete a scegliere automaticamente la dimensione ottimale per i dati.
Come cambiare il tipo di dati dell'array
Un array deve contenere dati dello stesso tipo.
Quindi, non posso cambiare il formato dati a un solo elemento.
Posso però modificare il formato a tutti gli elementi usando l'attributo dtype della funzione array()
data1=numpy.array(data, dtype=int)
oppure il metodo astype
data1=data.astype(int)
Sono due strade possibili per modificare il formato dei dati di un array già esistente.
Le operazioni tra array con formati dati diversi
Quando elaboro due array con formato diverso, python trasforma uno dei due array nel formato dell'altro, se è richiesto dall'operazione.
Il formato di destinazione dei dati dipende dal tipo di operazioni.
Generalmente, il formato di default è il float ma non è sempre così.
Esempio
Creo due array, uno in formato a virgola mobile e l'altro con numeri complessi.
data1=np.array([1,2,3], dtype=int)
data2=np.array([1,2,3], dtype=complex)
Poi li sommo tra loro
data3=data1+data2
Gli elementi della somma sono trasformati automaticamente in numeri complessi.
>>> data3
array([2.+0.j, 4.+0.j, 6.+0.j])
>>> data3.dtype
dtype('complex128')
E così via.