Come modificare il formato dati di un array in python

Per cambiare il formato dei dati in un array in Python, copio la variabile con la funzione array() di numpy, indicando il nuovo tipo di dati nell'attributo dtype.

y= np.array(x, dtype=tipo)

oppure il metodo astype.

y= x.astype(tipo)

  • x è l'array di partenza, un vettore o una matrice, già esistente.
  • y è il nuovo array, conterrà i dati di x convertiti nel nuovo formato.
  • dtype è l'attributo usato nella funzione array() per indicare il nuovo tipo di dati ( int, uint, float, complex, bool ). Nel metodo astype, invece, devo indicare il tipo di dati tra parentesi.

Nota. Nel linguaggio Python gli array si distinguono dalle liste. Gli array devono essere strutture omogenee, possono contenere soltanto elementi dello stesso tipo. Le liste, invece, possono contenere anche elementi di diverso formato.

    Un esempio pratico

    Esempio 1

    Creo un vettore con tre numeri interi con la funzione array() della libreria numpy.

    import numpy as np
    v=np.array([1,2,3])

    Il vettore contiene tre numeri interi.

    Per vedere il tipo di dati uso il metodo dtype

    >>> v.dtype
    dtype('int32')

    Ora voglio convertire l'array in numeri a virgola mobile.

    Copio il vettore v con la funzione array() indicando float nell'attributo dtype.

    Assegno la copia alla variabile w.

    w=np.array(v, dtype=float)

    Il vettore w ha gli stessi elementi di v ma in virgola mobile.

    Negli elementi dell'array ci sono i numeri con il punto decimale.

    >>> w
    array([1., 2., 3.])

    Per verificare il nuovo formato dei dati, uso di nuovo il metodo dtype

    Questa volta però lo uso sulla variabile w.

    >>> w.dtype
    dtype('float64')

    Il vettore w è in formato a virgola mobile (float) a 64 bit.

    Esempio 2

    Posso ottenere lo stesso risultato con il metodo astype.

    w=v.astype(float)

    In questo caso ho creato una copia del vettore (v) usando un altro vettore (w).

    Ho così mantenuto in memoria entrambi i vettori.

    >>> v
    array([1, 2, 3])
    >>> w
    array([1., 2., 3.])

    Avrei comunque potuto copiare il vettore (v) anche su se stesso (v).

    v=v.astype(float)

    E così via.

     


     

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

    FacebookTwitterLinkedinLinkedin
    knowledge base
    1. Il linguaggio Python
    2. Come installare Python sul PC
    3. Come scrivere un programma in Python
    4. Come usare Python in modalità interattiva
    5. Le variabili
    6. I numeri
    7. Gli operatori logici
    8. Le strutture iterative ( o cicli )
    9. Le strutture condizionali
    10. Le eccezioni
    11. I file in python
    12. Le classi
    13. I moduli