La funzione diag di python

Per estrarre la diagonale principale e secondaria di una matrice, nel linguaggio python uso le funzione diag() e e fliplr() del modulo numpy.

Diagonale principale

numpy.diag(m)

Diagonale secondaria (antidiagonale)

numpy.diag(fliplr(m))

In entrambi i casi l'argomento in input è un oggetto di tipo array.

La funzione diag() mi restituisce il vettore degli elementi nella diagonale principale o secondaria della matrice.

Nota. Nel caso della diagonale secondaria, la funzione fliplr() ribalta la matrice da sinistra a destra. Questo escamotage mi permette di trovare anche l'antidiagonale della matrice.

    Un esempio pratico

    Esempio 1 (diagonale principale)

    Importo il modulo numpy nell'interprete python

    >>> import numpy as np

    Definisco una matrice 3x3 con la funzione array() di numpy.

    >>> M=np.array([[1,2,3],[4,5,6],[7,8,9]])

    Per estrarre la diagonale principale uso la funzione diag()

    >>> np.diag(M)

    Il risultato in output è il vettore con gli elementi della diagonale principale.

    array([1, 5, 9])

    Per estrarre una diagonale diversa da quella principale, mi basta aggiungere un secondo attributo.

    >>> np.diag(M,k)

    Se l'argomento è k>0, la funzione estrae le diagonali sopra la diagonale principale ( es. k=1, k=2, ecc. ).

    Se k<0, la funzione estrae una diagonale sotto la diagonale principale ( es. k=-1, k=-2, ecc. )

    Esempio 2 (antidiagonale)

    Per ottenere l'antidiagonale aggiungo la funzione fliplr().

    Poi calcolo la diagonale della matrice ribaltata.

    >>> np.diag(np.fliplr(M))

    La funzione fliplr() ribalta le colonne della matrice da destra a sinistra.

    Il risultato in output è l'antidiagonale della matrice.

    array([3, 5, 7])

    E così via.

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Numpy

    I metodi e le funzioni