Tweet Share Share

Laatst bijgewerkt op 19 augustus 2020

Het ontwikkelen van machine learning-modellen in Python vereist vaak het gebruik van NumPy-arrays.

NumPy-arrays zijn efficiënte gegevensstructuren voor het werken met gegevens in Python, en machine learning-modellen zoals die in de scikit-learn-bibliotheek, en deep learning-modellen zoals die in de Keras-bibliotheek, verwachten invoergegevens in het formaat van NumPy-arrays en doen voorspellingen in het formaat van NumPy-arrays.

Als zodanig is het gebruikelijk om NumPy-arrays op te slaan in een bestand.

U kunt bijvoorbeeld uw gegevens voorbereiden met transformaties zoals schalen en deze moeten opslaan in een bestand voor later gebruik. U kunt ook een model gebruiken om voorspellingen te doen en de voorspellingen in een bestand opslaan voor later gebruik.

In deze tutorial ontdekt u hoe u uw NumPy-arrays in een bestand kunt opslaan.

Na afloop van deze tutorial weet u:

  • Hoe u NumPy-arrays opslaat in bestanden in CSV-formaat.
  • Hoe u NumPy-arrays opslaat in bestanden in NPY-formaat.
  • Hoe u NumPy-arrays opslaat in gecomprimeerde bestanden in NPZ-formaat.

Kick-start uw project met mijn nieuwe boek Machine Learning Mastery With Python, inclusief stap-voor-stap tutorials en de Python-broncodebestanden voor alle voorbeelden.

Let’s get started.

Hoe een NumPy-array naar een bestand opslaan voor Machine Learning

Hoe een NumPy-array naar een bestand opslaan voor Machine Learning
Foto door Chris Combe, sommige rechten voorbehouden.

Handleidingoverzicht

Deze handleiding is onderverdeeld in drie delen:

  1. Opslaan van NumPy-arrays in .CSV File (ASCII)
  2. Save NumPy Array to .NPY File (binair)
  3. Save NumPy Array to .NPZ File (compressed)

Save NumPy Array to .CSV File (ASCII)

Het meest voorkomende bestandsformaat voor het opslaan van numerieke gegevens in bestanden is het door komma’s gescheiden variabele formaat, of kortweg CSV.

Het is zeer waarschijnlijk dat uw trainingsgegevens en invoergegevens voor uw modellen zijn opgeslagen in CSV-bestanden.

Het kan handig zijn om gegevens op te slaan in CSV-bestanden, zoals de voorspellingen van een model.

Je kunt je NumPy-arrays opslaan in CSV-bestanden met behulp van de savetxt() functie. Deze functie neemt een bestandsnaam en een array als argumenten en slaat de array op in CSV formaat.

Je moet ook het scheidingsteken opgeven; dit is het teken dat wordt gebruikt om elke variabele in het bestand te scheiden, meestal een komma. Dit kan worden ingesteld via het “delimiter” argument.

1.1 Voorbeeld van het opslaan van een NumPy array naar CSV bestand

Het onderstaande voorbeeld demonstreert hoe een enkele NumPy array naar CSV formaat wordt opgeslagen.

1
2
3
4
5
6
7

# opslaan numpy array als csv-bestand
from numpy import asarray
from numpy import savetxt
# definieer data
data = asarray(])
# opslaan in csv-bestand
savetxt(‘data.csv’, data, delimiter=’,’)

Het uitvoeren van het voorbeeld definieert een NumPy-array en slaat deze op in het bestand ‘data.csv’.

De array heeft een enkele rij gegevens met 10 kolommen. We zouden verwachten dat deze gegevens worden opgeslagen in een CSV-bestand als een enkele rij gegevens.

Nadat we het voorbeeld hebben uitgevoerd, kunnen we de inhoud van ‘data.csv’ inspecteren.

We zouden het volgende moeten zien:

1
0.000000000000000000e+00,1.000000000000000000e+00,2.000000000000000000e+00,3.000000000000000000e+00,4.000000000000000000e+00,5.000000000000000000e+00,6.000000000000000000e+00,7.00000000000000000000000000e+00,8.0000000000000000000000e+00,9.00000000000000000000000000e+00

We kunnen zien dat de gegevens correct zijn opgeslagen als een enkele rij en dat de drijvende komma getallen in de array zijn opgeslagen met volledige precisie.

1.2 Voorbeeld van het laden van een NumPy array uit CSV-bestand

We kunnen deze gegevens later laden als een NumPy array met behulp van de loadtext() functie en daarbij de bestandsnaam opgeven en hetzelfde scheidingsteken met komma’s.

Het volledige voorbeeld staat hieronder.

1
2
3
4
5
6

# laad numpy array uit csv-bestand
from numpy import loadtxt
# laad array
data = loadtxt(‘data.csv’, delimiter=’,’)
# print de array
print(data)

Het uitvoeren van het voorbeeld laadt de gegevens uit het CSV-bestand en drukt de inhoud af, die overeenkomt met onze enkele rij met 10 kolommen zoals gedefinieerd in het vorige voorbeeld.

1

Save NumPy Array to .NPY-bestand (binair)

Soms hebben we veel gegevens in NumPy-arrays die we efficiënt willen opslaan, maar die we alleen in een ander Python-programma hoeven te gebruiken.

Daarom kunnen we de NumPy-arrays opslaan in een native binair formaat dat efficiënt is om zowel op te slaan als te laden.

Dit komt vaak voor bij geprepareerde invoergegevens, zoals getransformeerde gegevens, die moeten worden gebruikt als basis om in de toekomst een reeks machine learning-modellen te testen of veel experimenten uit te voeren.

Het .npy-bestandsformaat is geschikt voor deze use-case en wordt eenvoudig “NumPy-formaat” genoemd.

Dit kan worden bereikt met behulp van de save() NumPy-functie en met vermelding van de bestandsnaam en de array die moet worden opgeslagen.

2.1 Voorbeeld van het opslaan van een NumPy-array naar NPY-bestand

Het onderstaande voorbeeld definieert onze tweedimensionale NumPy-array en slaat deze op in een .npy-bestand.

1
2
3
4
5
6
7

# numpy array opslaan als npy bestand
from numpy import asarray
from numpy import save
# definieer data
data = asarray(])
# opslaan in npy bestand
save(‘data.npy’, data)

Na het uitvoeren van het voorbeeld ziet u een nieuw bestand in de directory met de naam ‘data.npy’.

U kunt de inhoud van dit bestand niet rechtstreeks met uw teksteditor bekijken, omdat het in binair formaat is.

2.2 Voorbeeld van het laden van een NumPy-array uit NPY-bestand

U kunt dit bestand later als een NumPy-array laden met behulp van de load()-functie.

Het volledige voorbeeld staat hieronder.

1
2
3
4
5
6

# laad numpy array from npy bestand
from numpy import load
# laad array
data = load(‘data.npy’)
# druk de array af
druk(data)

Het uitvoeren van het voorbeeld zal het bestand laden en de inhoud afdrukken, waarbij wordt bevestigd dat zowel het bestand correct is geladen als dat de inhoud overeenkomt met wat we verwachten in hetzelfde tweedimensionale formaat.

1
]

Save NumPy Array to .NPZ-bestand (gecomprimeerd)

Soms bereiden we gegevens voor voor modellering die moeten worden hergebruikt in meerdere experimenten, maar de gegevens zijn groot.

Dit kunnen voorbewerkte NumPy-arrays zijn, zoals een corpus van tekst (gehele getallen) of een verzameling herschaalde beeldgegevens (pixels). In deze gevallen is het wenselijk om zowel de gegevens op te slaan in een bestand, maar ook in een gecomprimeerd formaat.

Dit maakt het mogelijk om gigabytes aan gegevens te reduceren tot honderden megabytes en maakt eenvoudige overdracht naar andere servers of cloud computing mogelijk voor lange algoritme runs.

Het .npz-bestandsformaat is geschikt voor dit geval en ondersteunt een gecomprimeerde versie van het native NumPy-bestandsformaat.

Met de NumPy-functie savez_compressed() kunnen meerdere NumPy-arrays worden opgeslagen in een enkel gecomprimeerd .npz-bestand.

3.1 Voorbeeld van het opslaan van een NumPy-array in een NPZ-bestand

We kunnen deze functie gebruiken om onze enkele NumPy-array op te slaan in een gecomprimeerd bestand.

Het volledige voorbeeld vindt u hieronder.

1
2
3
4
5
6
7

# opslaan numpy array als npz bestand
from numpy import asarray
from numpy import savez_compressed
# definieer data
data = asarray(])
# opslaan in npy bestand
savez_compressed(‘data.npz’, data)

Het uitvoeren van het voorbeeld definieert de array en slaat deze op in een bestand in gecomprimeerd numpy formaat met de naam ‘data.npz’.

Zoals bij het .npy formaat kunnen we de inhoud van het opgeslagen bestand niet inspecteren met een teksteditor omdat het bestandsformaat binair is.

3.2 Voorbeeld van het laden van een NumPy array uit NPZ bestand

We kunnen dit bestand later laden met dezelfde load() functie uit de vorige sectie.

In dit geval ondersteunt de savez_compressed() functie het opslaan van meerdere arrays in een enkel bestand. Daarom kan de load() functie meerdere arrays laden.

De geladen arrays worden geretourneerd van de load() functie in een dict met de namen ‘arr_0’ voor de eerste array, ‘arr_1’ voor de tweede, enzovoort.

Het volledige voorbeeld van het laden van onze enkele array staat hieronder.

1
2
3
4
5
6
7
8

# laad numpy array uit npz bestand
from numpy import load
# laad dict van arrays
dict_data = load(‘data.npz’)
# pak de eerste array
data = dict_data
# print de array
print(data)

Het uitvoeren van het voorbeeld laadt het gecomprimeerde numpy bestand dat een woordenboek van arrays bevat, extraheert vervolgens de eerste array die we hebben opgeslagen (we hebben er maar één opgeslagen), drukt vervolgens de inhoud af en bevestigt dat de waarden en de vorm van de array overeenkomen met wat we in eerste instantie hebben opgeslagen.

1
]

Verder lezen

In dit gedeelte vindt u meer bronnen over het onderwerp als u dieper op de materie wilt ingaan.

Posts

  • Hoe Machine Learning-gegevens te laden in Python
  • Een inleiding tot NumPy-arrays in Python
  • Hoe NumPy-arrays te indexeren, te slicen en opnieuw vorm te geven voor Machine Learning

API’s

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

Samenvatting

In deze tutorial heb je ontdekt hoe je je NumPy arrays kunt opslaan in een bestand.

In het bijzonder hebt u geleerd:

  • Hoe u NumPy-arrays kunt opslaan in bestanden met de CSV-indeling.
  • Hoe u NumPy-arrays kunt opslaan in bestanden met de NPY-indeling.
  • Hoe sla ik NumPy arrays op in gecomprimeerde NPZ geformatteerde bestanden.

Heeft u nog vragen?
Stel uw vragen in de comments hieronder en ik zal mijn best doen om ze te beantwoorden.

Ontdek snel Machine Leren in Python!

Maak kennis met Machine Leren met Python

Ontwikkel uw eigen modellen in enkele minuten

….met slechts een paar regels scikit-learn code

Lees hoe in mijn nieuwe Ebook:
Machine Learning Mastery With Python

Bevat zelfstudie tutorials en end-to-end projecten zoals:
Laden van data, visualisatie, modellering, tuning, en nog veel meer.

Breng Machine Learning eindelijk naar
je eigen projecten

Skip de academici. Alleen resultaten.

Zie wat er in

Tweet Share Share

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.