Numpy genfromtxt

Numpy genfromtxt

Un pacchetto Python particolarmente apprezzato e ampiamente usato è numpy. Ti offre diverse funzioni per trasformare i dati tabulari in un array. Uno di questi è il numpy.funzione genfromText (). Una delle tante funzioni fornite dalla libreria Numpy Python che riceve i dati tabulari lo genera in una matrice di dati e il testo emette è chiamato numpy genfromtxt. In questo post, esamineremo come usare Python Numpy.funzione genfromtxt () per caricare i dati da un file di testo. Durante tutto il tutorial, dimostreremo l'uso del metodo Numpy GenFromTxt e GenFromText ().

GenFromtxt () Definizione della funzione

Un file di testo può caricare i dati in un programma utilizzando la funzione genfromtxt (). Per pulire il contenuto nel file di testo, sono richiesti più valori degli argomenti. Attraverso l'uso di operazioni di filtraggio, eliminazione e sostituzione, può anche far fronte ai valori mancanti o nulli.

Ci sono due loop in numpy genfromtxt. Ogni riga del file viene convertita in una sequenza di stringhe usando un singolo loop. Il secondo ciclo cambia quindi ogni stringa in un tipo di dati corretto. Di conseguenza, questo approccio è più lento e non efficiente come il singolo loop. Il metodo GenFromTXT è incaricato di colmare eventuali lacune nei dati se ci sono valori mancanti.

Sintassi della funzione genfromtxt ()

Abbiamo allegato la seguente sintassi della funzione genfromtxt ():


La funzione genfromtxt () accetta una vasta gamma di argomenti. Ma ci concentreremo su quelli più tipici:

Nome parametro

Descrizione

fname Il nome file che verrà letto è indicato come fname.
dtype Questo visualizza il tipo di dati dell'array risultante. Il valore predefinito del dType è "Float."
Commenti Questa opzione descrive ogni riga di informazioni.
delimitatore = nessuno Il valore che viene impiegato per dividere i valori è questo.
skip_header = 0 Questo valore indica al file di saltare le righe a partire dall'inizio.
skip_footer = 0 Con questa opzione, le righe inferiori del file devono essere saltate.
convertitori = nessuno Questo valore indica funzioni o variabili Lambda come convertire i dati della colonna in valori.
mancante_values ​​= nessuno Questo è il valore della stringa utilizzato per compilare i valori mancanti.

Parliamo di vari esempi numpy genfromtxt per saperne di più su come funziona questa importante funzione.

Esempio 1

Cominciamo con un facile esempio. Per creare l'array di output usando la funzione GenFromTXT, abbiamo prima invocato le librerie "Numpy" e "IO". Poiché abbiamo usato l'UNICODE della stringa nei dati, i dati vengono forniti manualmente in formato stringa, quindi trasmessi tramite il metodo GenFromTXT utilizzando la funzione "Stringio". Qui, puoi vedere che le virgole sono impiegate come delimitatori perché possono essere utilizzate per distinguere tra i valori. L'array di risultato della funzione GenFromTXT contiene l'array di uscita formata. Prova a capire il seguente codice:

importa numpy
da IO import Stringio
valori = u "11, 22, 33 \ n111, 222, 333 \ n55,101,112"
data_val = numpy.genfromtxt (stringio (valori), delimiter = ",)
Stampa (data_val)



Il formato di input può essere specificato come generatore, elenco di stringhe, stringa, file di oggetti Apri con funzione di lettura o stringa. La funzione GenFromTXT presuppone e visualizza l'array di output a seconda del tipo di input. Vedi il seguente output:


Si prega di notare che il metodo GenFromTXT interpreta una singola stringa come nome di un file, sia che si trovi localmente o in remoto. Il metodo GenFromTXT può anche ricevere la posizione dell'URL, che scaricherà e aprirà il file da quello fornito l'URL.

Esempio 2

In questo esempio, vedremo come utilizzare l'opzione delimita. Questa opzione viene utilizzata qui per dividere i dati per il nostro array di output a seconda della larghezza dei valori indicati nel file di input.

Poiché non abbiamo usato una virgola o un altro carattere per separare i due dati di input denominati "valori1" e "valori2", che includono numeri interi di larghezze diverse, dobbiamo utilizzare i valori interi come delimitatore per dividere i valori nel file per Il nostro array di output previsto.

Poiché i due input avevano larghezze di valore diverse su una singola riga, abbiamo diviso le colonne in tre gruppi di valori usando il delimitatore intero 3. Quando i valori nel nostro file di input hanno la stessa larghezza, possiamo utilizzare questo metodo. Se i valori nel file non sono tutti della stessa larghezza, possiamo usare una sequenza di valori interi come delimitatore per dividere i valori, come abbiamo fatto nell'input "valori_input2". Abbiamo usato il delimitatore delle sequenze 4, 3 e 2.

Importa Numpy come NP
da IO import Stringio
valori1 = u "2 2 6 \ n 4 2 66 \ n453203 3"
valori_input1 = np.genfromtxt (Stringio (valori1), delimitatore = 3)
Stampa (valori_input1)
valori2 = u "665636143 \ n 3 5 7 \ n 6532 9"
valori_input2 = np.genfromtxt (Stringio (valori2), delimiter = (4, 3, 2))
Stampa (valori_input2)



Ecco il seguente output:

Esempio 3

In questo esempio, parleremo del parametro AutoStrip della funzione GenFromtxt (). Questa opzione viene utilizzata per eliminare automaticamente gli spazi bianchi tra i valori nel nostro file di dati.

Se si utilizza un delimitatore, la linea si rompe in una serie di caratteri, incluso qualsiasi spazio bianco disponibile. Tuttavia, se passiamo "Autostrip = true" come parametro, riceveremo invece una stringa di caratteri vuoti.

Nella seguente screenshot, puoi vedere che abbiamo importato prima i moduli e creato i nostri dati in una variabile denominata "valori". Successivamente, abbiamo usato la funzione GenFromTXT. Qui, non stiamo utilizzando la funzione "Autostrip". Useremo questa opzione nella sezione in arrivo. Esegui il codice di seguito, quindi controlla i risultati. Qui, non abbiamo usato la funzione AutoStrip.

importa numpy
da IO import Stringio
valori = u "2, xyz, 4 \ n 5, nnn, 2"
Stampa (numpy.genfromtxt (stringio (valori), delimiter = ",", dtype = "| u5"))



Di seguito è riportato il risultato in cui è possibile vedere gli spazi tra i dati:


Nella schermata seguente, è possibile vedere che il resto del codice è lo stesso di cui sopra, ad eccezione dell'aggiunta dell'opzione "Autostrip" alla fine dell'ultima riga del codice.

importa numpy
da IO import Stringio
valori = u "2, xyz, 4 \ n 5, nnn, 2"
Stampa (numpy.genfromtxt (Stringio (valori), delimiter = ",", dType = "| u5", autostrip = true))



Ecco il risultato. È possibile abbinare questo output con l'output precedente e vedere la differenza creata usando l'opzione "AutoStrip".

Esempio 4

Diciamo che vuoi eliminare il materiale dalle stringhe che contengono commenti o determinati simboli. Puoi raggiungere questo obiettivo passando i parametri dei commenti al metodo GenFromTXT (). Esegui il seguente codice:

importa numpy
da IO import Stringio
valori = u "" "#
# Ignora !
# Ignora anche questo!
11, 1
31, 5
12, 9
15, 13
# Questa è l'ultima riga del codice!
6, 3
"" "
Stampa (numpy.genfromtxt (stringio (valori), commenti = "#", delimiter = ","))



Ecco l'output in cui è possibile vedere che i commenti menzionati nel codice precedente vengono ignorati.

Conclusione

Per avere una conoscenza approfondita della funzione Numpy GenFromtxt e del suo funzionamento, l'abbiamo esaminata in dettaglio usando diversi esempi in questo post. Abbiamo visto esempi su come utilizzare la funzione GenFromTXT per leggere i file di dati di input con vari tipi di dati e come utilizzare varie opzioni e approcci delimitanti. Puoi fare riferimento a questa informazione se sei nuovo a questo concetto. Questo articolo contiene tutti i dettagli cruciali sulla funzione GenFromtxt e sul suo utilizzo.