Tipi NumPy
Lezione 7 di 18 del corso Fondamenti di NumPy di Coddy.
Il programma deve allocare spazio sufficiente per consentire all’array a dimensione fissa di memorizzare internamente i propri dati. Come può un computer determinare la quantità di spazio da allocare?
È qui che entra in gioco il dtype. Ogni dtype ha un valore massimo e un valore minimo che permettono alla macchina di sapere quanto spazio allocare per ogni cella dell’array. Esistono molti tipi Numpy.
I tipi int sono interi a n bit:
| Tipo | Min | Max | Potenza | Bit |
| np.int8 | -128 | 127 | 2**8 | 8 |
| np.int16 | -32768 | 32767 | 2**16 | 16 |
| np.int32 | -2147483648 | 2147483647 | 2**32 | 32 |
| np.int64 | -9223372036854775808 | 9223372036854775807 | 2**64 | 64 |
I tipi float:
| Tipo |
| np.float16 |
| np.float32 |
| np.float64 |
| np.float128 |
Non posso mostrare i valori minimo e massimo perché sono troppo grandi.
Per vedere con i tuoi occhi qual è il valore massimo e il valore minimo, puoi usare numpy.iinfo(<i>type</i>) per i tipi interi e numpy.finfo(<i>dtype</i>) per i tipi float:
np.iinfo(np.int16).min
np.iinfo(np.int16).maxPerché dovremmo preoccuparci dei dtype?
Supponiamo di avere un array in cui ogni elemento rappresenta una stanza piena di persone. Il programma tiene traccia del numero di persone in ogni stanza.
Assegniamo all’array il tipo np.int8:
rooms = np.array([125, 3, 127], dtype=np.int8)Qui abbiamo 3 stanze. Ogni stanza ha un numero di tipo np.int8.
Nell’ultima stanza ci sono 127 persone!
Questo è il valore massimo di np.int8
Cosa succederà se un’altra persona entra in quella stanza?
rooms[-1] += 1
print(rooms)Output:
[ 125 3 -128]Guarda! Da 127 il numero è diventato -128. Questo non è il numero previsto; ecco perché dobbiamo assicurarci di usare il dtype giusto per le nostre esigenze.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Sfida
FacileCrea una funzione chiamata dtype_converter che riceve il numero di bit del tipo e un valore.
La funzione restituisce un array numpy a 0 dimensioni (Ricorda che un array a 0 dimensioni è semplicemente un singolo valore passato a np.array) con il dtype specificato e il valore incrementato di uno
bits può essere uno dei seguenti valori: 8, 16, 32, 64
Osserva attentamente l'output: alcuni casi di test andranno in overflow!
Provalo tu
import numpy as np
def dtype_converter(bits, value):
try:
if bits == 8:
return np.array(value+1, dtype=np.int8)
# Write your code here
except:
print("Overflow:", value+1)
Tutte le lezioni di Fondamenti di NumPy
2Creazione di array N-dimensionali
Dimensione superioreComprendere le formeRiempimento con valori fissiTipi NumPyIntervalloRimodellamentoEsercitati da solo: Compilatore Python online