Tweet Share Share Share

Sist uppdaterad den 19 augusti 2020

För att utveckla modeller för maskininlärning i Python måste man ofta använda sig av NumPy-matriser.

NumPy-matriser är effektiva datastrukturer för att arbeta med data i Python, och maskininlärningsmodeller som de i scikit-learn-biblioteket och djupinlärningsmodeller som de i Keras-biblioteket förväntar sig indata i formatet NumPy-matriser och gör förutsägelser i formatet NumPy-matriser.

Det är därför vanligt att man behöver spara NumPy-matriser i en fil.

Det kan till exempel hända att du förbereder dina data med transformationer som skalning och behöver spara dem i en fil för senare användning. Du kan också använda en modell för att göra förutsägelser och behöver spara förutsägelserna i en fil för senare användning.

I den här handledningen kommer du att upptäcka hur du sparar dina NumPy-matriser i en fil.

När du har slutfört den här handledningen vet du:

  • Hur man sparar NumPy-matriser till CSV-formaterade filer.
  • Hur man sparar NumPy-matriser till NPY-formaterade filer.
  • Hur man sparar NumPy-matriser till komprimerade NPZ-formaterade filer.

Kickstart ditt projekt med min nya bok Machine Learning Mastery With Python, inklusive steg-för-steg-handledning och Python-källkodfiler för alla exempel.

Vi sätter igång.

Hur man sparar en NumPy-array till en fil för maskininlärning

Hur man sparar en NumPy-array till en fil för maskininlärning
Foto av Chris Combe, vissa rättigheter förbehållna.

Tutorial Overview

Denna tutorial är uppdelad i tre delar; de är:

  1. Save NumPy Array to .CSV-fil (ASCII)
  2. Spara NumPy Array till .NPY-fil (binär)
  3. Spara NumPy Array till .NPZ-fil (komprimerad)

Spara NumPy Array till .CSV-fil (ASCII)

Det vanligaste filformatet för att lagra numeriska data i filer är formatet för kommaseparerade variabler, eller CSV.

Det är troligt att dina träningsdata och indata till dina modeller lagras i CSV-filer.

Det kan vara praktiskt att spara data till CSV-filer, till exempel förutsägelser från en modell.

Du kan spara dina NumPy-matriser till CSV-filer med hjälp av funktionen savetxt(). Funktionen tar ett filnamn och en matris som argument och sparar matrisen i CSV-format.

Du måste också ange avgränsaren; detta är det tecken som används för att separera varje variabel i filen, oftast ett kommatecken. Detta kan ställas in via argumentet ”delimiter”.

1.1 Exempel på att spara en NumPy-array till CSV-fil

Exemplet nedan visar hur man sparar en enskild NumPy-array till CSV-format.

1
2
3
4
5
6
7

# save numpy array som csv-fil
from numpy import asarray
from numpy import savetxt
# define data
data = asarray(])
# save to csv file
> savetxt(’data.csv’, data, delimiter=’,’)

Att köra exemplet kommer att definiera en NumPy-array och spara den i filen ”data.csv”.

Arrayn har en enda rad med data med 10 kolumner. Vi förväntar oss att dessa data sparas till en CSV-fil som en enda rad data.

När vi kört exemplet kan vi inspektera innehållet i ”data.csv”.

Vi bör se följande:

1
0.000000000000000000e+00,1.000000000000000000e+00,2.000000000000000000e+00,3.000000000000000000e+00,4.000000000000000000e+00,5.000000000000000000e+00,6.000000000000000000e+00,7.0000000000000000000000000000000000e+00,8.000000000000000000000000000000e+00,9.00000000000000000000000000e+00

Vi kan se att data sparas korrekt som en enda rad och att flyttalstalen i matrisen sparades med full precision.

1.2 Exempel på laddning av en NumPy-array från CSV-fil

Vi kan ladda dessa data senare som en NumPy-array med hjälp av funktionen loadtext() och ange filnamnet och samma kommatecknare.

Det kompletta exemplet visas nedan.

1
2
3
4
5
6

# ladda numpy-array från csv-fil
from numpy import loadtxt
# ladda array
data = loadtxt(’data.csv’, delimiter=’,’)
# skriv ut matrisen
print(data)

Avkörning av exemplet laddar data från CSV-filen och skriver ut innehållet, vilket matchar vår enda rad med 10 kolumner som definierades i föregående exempel.

1

Spara NumPy Array till .NPY-fil (binär)

Ibland har vi mycket data i NumPy-matriser som vi vill spara effektivt, men som vi bara behöver använda i ett annat Pythonprogram.

Därför kan vi spara NumPy-matriserna i ett inhemskt binärt format som är effektivt att både spara och ladda.

Detta är vanligt för indata som har förberetts, t.ex. transformerade data, som kommer att behöva användas som grund för att testa en rad olika modeller för maskininlärning i framtiden eller för att köra många experiment.

Den .npy-filformatet är lämpligt för detta användningsområde och kallas helt enkelt ”NumPy-formatet”.

Detta kan åstadkommas med hjälp av funktionen save() NumPy och genom att ange filnamnet och matrisen som ska sparas.

2.1 Exempel på sparande av en NumPy-matris till NPY-fil

Exemplet nedan definierar vår tvådimensionella NumPy-matris och sparar den till en .npy-fil.

1
2
3
4
5
6
7

# spara numpy-array som npy-fil
from numpy import asarray
from numpy import save
# definiera data
data = asarray(])
# spara till npy-fil
save(’data.npy’, data)

När du kört exemplet kommer du att se en ny fil i katalogen med namnet ”data.npy”.

Du kan inte inspektera innehållet i den här filen direkt med din textredigerare eftersom den är i binärt format.

2.2 Exempel på laddning av en NumPy-array från en NPY-fil

Du kan ladda den här filen som en NumPy-array senare med hjälp av funktionen load().

Det fullständiga exemplet finns nedan.

1
2
3
4
5
6

# ladda numpy-array från npy-fil
from numpy import load
# ladda array
data = load(’data.npy’)
# skriv ut matrisen
print(data)

Avkörning av exemplet kommer att läsa in filen och skriva ut innehållet, vilket bekräftar att både den lästes in korrekt och att innehållet matchar det vi förväntar oss i samma tvådimensionella format.

1
]

Spara NumPy Array till .NPZ-fil (komprimerad)

Ibland förbereder vi data för modellering som måste återanvändas i flera experiment, men data är stora.

Det kan röra sig om förbehandlade NumPy-matriser, t.ex. en korpus av text (heltal) eller en samling omskalade bilddata (pixlar). I dessa fall är det önskvärt att både spara data till en fil, men också i ett komprimerat format.

Detta gör det möjligt att reducera gigabyte av data till hundratals megabyte och gör det enkelt att överföra data till andra servrar i molntjänster för långa algoritmkörningar.

Filformatet .npz är lämpligt för det här fallet och stöder en komprimerad version av det ursprungliga NumPy-filformatet.

Med NumPy-funktionen savez_compressed() kan flera NumPy-matriser sparas till en enda komprimerad .npz-fil.

3.1 Exempel på att spara en NumPy-matris till NPZ-fil

Vi kan använda den här funktionen för att spara vår enda NumPy-matris till en komprimerad fil.

Det kompletta exemplet visas nedan.

1
2
3
4
5
6
7

# save numpy array som npz-fil
from numpy import asarray
from numpy import savez_compressed
# define data
data = asarray(])
# save to npy file
savez_compressed(’data.npz’, data)

Att köra exemplet definierar matrisen och sparar den i en fil i komprimerat numpy-format med namnet ”data.npz”.

Som med .npy-formatet kan vi inte inspektera innehållet i den sparade filen med en texteditor eftersom filformatet är binärt.

3.2 Exempel på laddning av en NumPy-matris från NPZ-fil

Vi kan ladda filen senare med samma load()-funktion som i föregående avsnitt.

I det här fallet stödjer funktionen savez_compressed() att spara flera matriser till en enda fil. Därför kan funktionen load() ladda flera matriser.

De laddade matriserna returneras från funktionen load() i en dict med namnen ”arr_0” för den första matrisen, ”arr_1” för den andra och så vidare.

Det kompletta exemplet på laddning av vår enda matris visas nedan.

1
2
3
4
5
6
7
8

# ladda numpy array från npz-fil
from numpy import load
# ladda dict av arrays
dict_data = load(’data.npz’)
# extrahera den första matrisen
data = dict_data
# skriv ut matrisen
print(data)

Avkörning av exemplet laddar den komprimerade numpyfilen som innehåller en ordbok av matriser, hämtar sedan den första matrisen som vi sparade (vi sparade bara en), skriver ut innehållet och bekräftar att värdena och formen på matrisen stämmer överens med vad vi sparade från början.

1
]

Fördjupad läsning

I det här avsnittet finns fler resurser om ämnet om du vill fördjupa dig.

Posts

  • Hur man laddar data för maskininlärning i Python
  • En försiktig introduktion till NumPy-matriser i Python
  • Hur man indexerar, delar och omformar NumPy-matriser för maskininlärning

APIs

  • numpy.savetxt API
  • numpy.save API
  • numpy.savez API
  • numpy.savez_compressed API
  • numpy.load API
  • numpy.loadtxt API

Sammanfattning

I den här handledningen upptäckte du hur du kan spara dina NumPy-matriser till en fil.

Specifikt har du lärt dig:

  • Hur du sparar NumPy-matriser till CSV-formaterade filer.
  • Hur du sparar NumPy-matriser till NPY-formaterade filer.
  • Hur man sparar NumPy arrays till komprimerade NPZ-formaterade filer.

Har du några frågor?
Sätt dina frågor i kommentarerna nedan så ska jag göra mitt bästa för att svara.

Upptäck snabb maskininlärning i Python!

Mästra maskininlärning med Python

Utveckla dina egna modeller på några minuter

…med bara några rader scikit-learn-kod

Lär dig hur i min nya Ebook:
Machine Learning Mastery With Python

Det omfattar självstudier och end-to-end-projekt som:
Laddning av data, visualisering, modellering, inställning och mycket mer…

Finally Bring Machine Learning To
Your Own Projects

Skippa det akademiska. Bara resultat.

Se vad som finns inuti

Tweet Share Share Share

Lämna ett svar

Din e-postadress kommer inte publiceras.