Numpy genfromtxt

Numpy genfromtxt

En spesielt godt likt og mye brukt Python-pakke er numpy. Det tilbyr deg flere funksjoner for å gjøre tabelldata til en matrise. En av disse er numpy.GenFromText () -funksjon. En av de mange funksjonene levert av Python Numpy -biblioteket som mottar tabelldata genererer det til en rekke data, og utgangsteksten kalles Numpy GenFromTXT. I dette innlegget vil vi gå gjennom hvordan du bruker Python Numpy.genfromtxt () funksjon for å laste inn data fra en tekstfil. Gjennom hele opplæringen vil vi demonstrere bruken av Numpy GenFromTXT og GenFromText () -metoden.

GenFromTxt () Funksjonsdefinisjon

En tekstfil kan laste inn data i et program ved hjelp av GenFromTXT () -funksjonen. For å rengjøre innholdet i tekstfilen, kreves det flere argumentverdier. Gjennom bruk av filtrering, sletting og erstatning av operasjoner kan det også takle manglende eller nullverdier.

Det er to løkker i numpy genfromtxt. Hver linje i filen konverteres til en strengsekvens ved hjelp av en enkelt sløyfe. Den andre sløyfen endrer deretter hver streng til riktig datatype. Som et resultat er denne tilnærmingen tregere og ikke så effektiv som enkeltsløyfen. GenFromTXT -metoden har ansvaret for å fylle ut hull i dataene hvis det mangler noen manglende verdier.

Syntaks av GenFromTxt () -funksjonen

Vi har festet følgende syntaks av GenFromTXT () -funksjonen:


GenFromTxt () -funksjonen godtar et bredt spekter av argumenter. Men vi vil konsentrere oss om de mest typiske:

Parameternavn

Beskrivelse

fname Filnavnet som vil bli lest er indikert som fname.
dtype Dette viser den resulterende matriserens datatype. DTYPEs standardverdi er “Float.”
Kommentarer Dette alternativet beskriver hver informasjonslinje.
avgrensning = ingen Verdien som brukes for å dele verdier er denne.
Skip_header = 0 Denne verdien instruerer filen om å hoppe over rader som starter i begynnelsen.
Skip_footer = 0 Med dette alternativet skal filens nederste rad hoppes over.
omformere = ingen Denne verdien forteller Lambda -funksjoner eller variabler hvordan man konverterer kolonnedata til verdier.
Mangler_verdier = ingen Denne er strengverdien som brukes til å fylle ut for manglende verdier.

La oss snakke om forskjellige numpy genfromtxt -eksempler for å lære mer om hvordan denne viktige funksjonen fungerer.

Eksempel 1

La oss begynne med et enkelt eksempel. For å lage utdata -matrisen ved hjelp av GenFromTXT -funksjonen, har vi påkalt oss "Numpy" og "IO" -bibliotekene først. Siden vi brukte unicode av streng i dataene, leveres data manuelt i strengformat, og deretter overført gjennom GenFromTXT -metoden ved å bruke "Stringio" -funksjonen. Her kan du se at komma blir ansatt som avgrensere fordi de kan brukes til å skille mellom verdier. Utfallsarrayen av GenFromTXT -funksjonen inneholder den dannede utgangsarrayen. Prøv å forstå følgende kode:

Importer numpy
Fra IO Import Stringio
Verdier = U "11, 22, 33 \ N111, 222, 333 \ N55,101,112"
data_val = numpy.GenFromTxt (Stringio (Values), Delimiter = ",")
print (data_val)



Inngangsformatet kan spesifiseres som en generator, liste over strenger, streng, åpen objektfil med lesefunksjon eller streng. GenfromTXT -funksjonen forutsetter og viser utgangsarrayen avhengig av inngangstype. Se følgende utgang:


Vær oppmerksom på at GenFromTXT -metoden tolker en enkelt streng som et filnavn, enten den er lokalisert lokalt eller eksternt. GenFromTXT -metoden kan også motta URL -plasseringen, som vil laste ned og åpne filen fra den som følger med URL -en.

Eksempel 2

I dette eksemplet får vi se hvordan du bruker avgrensningsalternativet. Dette alternativet brukes her for å dele opp dataene for vår output -matrise, avhengig av bredden på verdiene gitt i inndatafilen.

Fordi vi ikke har brukt et komma eller annet tegn for å skille de to inngangsdataene som heter “Values1” og “Values2”, som inkluderer heltall med forskjellige bredder, må vi bruke heltallverdiene som en avgrensning for å dele verdiene i filen for Vår tiltenkte output -matrise.

Fordi de to inngangene hadde forskjellige verdibredder på en enkelt linje, delte vi kolonnene i tre grupper av verdier ved å bruke heltallavgrensen 3. Når verdiene i inndatafilen vår har samme bredde gjennom, kan vi bruke denne metoden. Hvis verdiene i filen ikke er alle samme bredde, kan vi bruke en sekvens av heltallverdier som avgrenser for å dele verdiene, som vi gjorde i "Values_input2" -inngangen. Vi brukte avgrenseren av sekvenser 4, 3 og 2.

Importer numpy som NP
Fra IO Import Stringio
VERDIER1 = U "2 2 6 \ N 4 2 66 \ N453203 3"
verdier_input1 = np.GenFromTXT (Stringio (Values1), Delimiter = 3)
print (verdier_input1)
Verdier2 = U "665636143 \ n 3 5 7 \ n 6532 9"
verdier_input2 = np.GenFromTXT (Stringio (Values2), Delimiter = (4, 3, 2))
print (verdier_input2)



Her er følgende utgang:

Eksempel 3

I dette eksemplet vil vi snakke om Autostrip -parameteren til GenFromTXT () -funksjonen. Dette alternativet brukes til automatisk å slette de hvite rommene mellom verdiene i datafilen vår.

Hvis du bruker en avgrenser, bryter linjen ned i en streng med tegn, inkludert tilgjengelig hvitrom. Imidlertid, hvis vi passerer "autostrip = true" som en parameter, vil vi motta en streng med tomme tegn i stedet.

I det følgende skjermbildet kan du se at vi først har importert modulene og opprettet dataene våre i en variabel med navnet "Verdier". Etter det brukte vi GenFromTXT -funksjonen. Her bruker vi ikke "Autostrip" -funksjonen. Vi bruker dette alternativet i den kommende delen. Kjør koden nedenfor, og sjekk deretter resultatene. Her har vi ikke brukt Autostrip -funksjonen.

Importer numpy
Fra IO Import Stringio
verdier = u "2, xyz, 4 \ n 5, nnn, 2"
trykk (Numpy.GenFromTxt (Stringio (Values), Delimiter = ",", DType = "| U5"))



Nedenfor er resultatet der du kan se mellomrommene mellom dataene:


På følgende skjermbilde kan du se at resten av koden er den samme som ovenfor, bortsett fra tillegg av "Autostrip" -alternativet på slutten av den siste linjen i koden.

Importer numpy
Fra IO Import Stringio
verdier = u "2, xyz, 4 \ n 5, nnn, 2"
trykk (Numpy.GenFromTxt (Stringio (Values), Delimiter = ",", DType = "| U5", AutOstrip = True))



Her er resultatet. Du kan matche denne utgangen med forrige utgang og se forskjellen som er opprettet ved hjelp av alternativet "Autostrip".

Eksempel 4

La oss si at du vil eliminere materiale fra strengene som inneholder kommentarer eller visse symboler. Du kan oppnå dette ved å sende kommentarparametere til GenFromTXT () -metoden. Kjør følgende kode:

Importer numpy
Fra IO Import Stringio
verdier = u "" "#
# Ignorer !
# Ignorer dette også!
11, 1
31, 5
12, 9
15, 13
# Dette er den siste linjen i koden!
6, 3
"" "
trykk (Numpy.GenFromTxt (Stringio (Values), Comments = "#", Delimiter = ",")))



Her er utdataene der du kan se at kommentarene som er nevnt i forrige kode blir ignorert.

Konklusjon

For å ha et grundig grep om den numpy genfromtxt -funksjonen og dens arbeid, har vi sett på den i detalj ved å bruke flere eksempler i dette innlegget. Vi har sett eksempler på hvordan du bruker GenFromTXT -funksjonen for å lese inngangsdatafiler med forskjellige datatyper og hvordan du bruker forskjellige avgrensningsalternativer og tilnærminger. Du kan henvise til dette informasjonen hvis du er ny på dette konseptet. Denne artikkelen inneholder alle avgjørende detaljer om GenFromTXT -funksjonen og bruken.