Menu
Coddy logo textTech

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:

TipoMinMaxPotenzaBit
np.int8-1281272**88
np.int16-32768327672**1616
np.int32-214748364821474836472**3232
np.int64-922337203685477580892233720368547758072**6464

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).max

Perché 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.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

challenge icon

Sfida

Facile

Crea 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

Esercitati da solo: Compilatore Python online