Enrico's pages/ 2007/ pygnami/ Python versione Bignami - Array numpy

Python versione Bignami - Array numpy

Import

Import di numpy: from numpy import *

Creazione

Operazioni

Indicizzazione

Iterazione

Plot di un vettore

    from pylab import *
    a = linspace(0, 3*pi, 100)
    plot(a, sin(a), 'b-', a, cos(a), 'r-')
    show()

Salvare su disco e caricare da disco

    # Salva in formato binario.
    # Viene salvata la sequenza grezza di numeri, senza informazioni sul tipo
    # di dato o sulle dimensioni
    a = fromfunction(lambda x, y: x**2 + y**2, (5, 5))
    a.tofile("/tmp/matrice")

    # Carica da file.  Bisogna specificare il tipo di dato (se non è float) e
    # le dimensioni (se non è un vettore)
    b = fromfile("/tmp/matrice", int)
    b.shape = (5, 5)

    # Salva in formato testo
    a.tofile("/tmp/matrice.txt", sep=",", format="%d")

    # Carica da file in formato testo
    b = fromfile("/tmp/matrice.txt", sep=",")
    b.shape = (5, 5)

Gestione degli errori di calcolo

Normalmente numpy ignora gli errori durante il calcolo. Questo comportamento si può cambiare usando numpy.seterr:

    numpy.seterr(divide=None, over=None, under=None, invalid=None)

Ognuno dei parametri può essere settato a:

I parametri, tutti opzionali, rappresentano:

seterr restituisce un dizionario con le impostazioni che erano attive prima che fosse chiamata.

Per settare la callback si usa seterrcall:

numpy.seterrcall(funzione)

La funzione callback prende due parametri, una stringa con la descrizione dell'errore e un numero i cui bit rappresentano il tipo di errore.

Esempio:

# Funzione callback def handler(msg, status): print msg if status & 1 != 0: print "Errore di divisione" if status & 2 != 0: print "Overflow" if status & 4 != 0: print "Underflow" if status & 8 != 0: print "Operazione non valida"

# Imposta la callback
numpy.seterrcall(handler)

# Configura la gestione degli errori di calcolo
old = numpy.seterr(divide="raise", over="call", under="warn", invalid="raise")

# Stampa la vecchia configurazione
print "Old settings:"
for type, val in old.iteritems():
    print "%s: %s" % (type, val)

Link