Tweet Megosztás Megosztás

Most Updated on Augusztus 19, 2020

A gépi tanulási modellek Pythonban történő fejlesztése gyakran igényli NumPy tömbök használatát.

A NumPy tömbök hatékony adatszerkezetek az adatokkal való munkához Pythonban, és a gépi tanulási modellek, például a scikit-learn könyvtárban, valamint a mélytanulási modellek, például a Keras könyvtárban, NumPy tömbök formátumában várják a bemeneti adatokat, és NumPy tömbök formátumában készítenek előrejelzéseket.

Akként gyakran előfordul, hogy a NumPy tömböket fájlba kell menteni.

Elképzelhető például, hogy az adatokat transzformációkkal, például skálázással készítjük elő, és későbbi felhasználás céljából fájlba kell menteni. Előfordulhat az is, hogy egy modell segítségével előrejelzéseket készít, és az előrejelzéseket későbbi felhasználás céljából fájlba kell mentenie.

Ebben a bemutatóban megtudhatja, hogyan mentheti a NumPy tömbjeit fájlba.

A bemutató elvégzése után tudni fogja:

  • Hogyan mentheti a NumPy tömböket CSV formátumú fájlba.
  • Hogyan mentheti a NumPy tömböket NPY formátumú fájlba.
  • Hogyan mentheti a NumPy tömböket tömörített NPZ formátumú fájlba.

Kezdje el projektjét új könyvemmel, a Machine Learning Mastery With Python című könyvvel, amely lépésről lépésre bemutató útmutatókat és az összes példa Python forráskódfájlját tartalmazza.

Kezdjük el.

How to Save a NumPy Array to File for Machine Learning

How to Save a NumPy Array to File for Machine Learning
Photo by Chris Combe, some rights reserved.

Tutorial áttekintés

Ez a bemutató három részre oszlik; ezek a következők:

  1. Save NumPy Array to .CSV fájlba (ASCII)
  2. NumPy tömb mentése .NPY fájlba (bináris)
  3. NumPy tömb mentése .NPZ fájlba (tömörített)

NumPy tömb mentése .CSV fájl (ASCII)

A numerikus adatok fájlokban való tárolásának legelterjedtebb fájlformátuma a vesszővel elválasztott változó formátum, vagy röviden CSV.

Valószínűleg a képzési adatok és a modellek bemeneti adatai CSV fájlokban vannak tárolva.

Kényelmes lehet az adatokat CSV fájlba menteni, például egy modell előrejelzéseit.

A NumPy tömbjeit a savetxt() függvény segítségével mentheti CSV fájlba. Ez a függvény egy fájlnevet és egy tömböt fogad el argumentumként, és a tömböt CSV formátumba menti.

Az elhatárolót is meg kell adnia; ez a karakter az egyes változók elválasztására szolgál a fájlban, leggyakrabban egy vessző. Ezt a “delimiter” argumentummal lehet beállítani.

1.1 Példa egy NumPy tömb CSV fájlba mentésére

Az alábbi példa azt mutatja be, hogyan lehet egyetlen NumPy tömböt CSV formátumba menteni.

1
2
3
4
5
6
7

# save numpy array as csv file
from numpy import asarray
from numpy import savetxt
# define data
data = asarray(])
# save to csv file
savetxt(‘data.csv’, data, delimiter=’,’)

A példa futtatásával definiálunk egy NumPy tömböt és elmentjük a ‘data.csv’ fájlba.

A tömb egyetlen adatsort tartalmaz 10 oszloppal. Azt várnánk, hogy ez az adat egyetlen adatsorként kerüljön elmentésre egy CSV fájlba.

A példa futtatása után megvizsgálhatjuk a ‘data.csv’ tartalmát.

A következőket kell látnunk:

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.000000000000000000000000000000e+00

Láthatjuk, hogy az adatokat helyesen egyetlen sorba mentettük, és hogy a tömbben lévő lebegőpontos számokat teljes pontossággal mentettük.

1.2 Példa NumPy tömb betöltésére CSV fájlból

Az adatokat később NumPy tömbként tölthetjük be a loadtext() függvény segítségével, megadva a fájlnevet és ugyanazt a vesszős elválasztót.

A teljes példa az alábbiakban található.

1
2
3
4
5
6

# load numpy array from csv file
from numpy import loadtxt
# load array
data = loadtxt(‘data.csv’, delimiter=’,’)
# a tömb kiírása
print(data)

A példa futtatása betölti az adatokat a CSV fájlból és kiírja a tartalmát, megfeleltetve az előző példában meghatározott 10 oszlopos egyetlen sorunknak.

1

Mentés NumPy tömb .NPY fájlba (bináris)

Néha sok adatunk van NumPy tömbökben, amit hatékonyan szeretnénk elmenteni, de csak egy másik Python programban kell felhasználnunk.

Ezért elmenthetjük a NumPy tömböket egy natív bináris formátumba, amely hatékony mind a mentés, mind a betöltés szempontjából.

Ez gyakori olyan előkészített bemeneti adatoknál, például transzformált adatoknál, amelyeket a jövőben különböző gépi tanulási modellek teszteléséhez vagy sok kísérlet lefuttatásához kell felhasználnunk.

A .npy fájlformátum megfelelő erre a felhasználási esetre, és egyszerűen “NumPy formátumnak” nevezzük.

Ez a save() NumPy függvény használatával, a fájlnév és a mentendő tömb megadásával érhető el.

2.1 Példa egy NumPy tömb NPY fájlba mentésére

Az alábbi példa meghatározza a kétdimenziós NumPy tömbünket, és elmenti egy .npy fájlba.

1
2
3
4
5
6
7

# numpy tömb mentése npy fájlként
from numpy import asarray
from numpy import save
# define data
data = asarray(])
# save to npy file
save(‘data.npy’, data)

A példa futtatása után egy új fájl fog megjelenni a könyvtárban ‘data.npy’ néven.

Ez a fájl tartalmát nem tudja közvetlenül megvizsgálni a szövegszerkesztőjével, mivel bináris formátumban van.

2.2 Példa NumPy tömb betöltésére NPY fájlból

Ezt a fájlt később NumPy tömbként töltheti be a load() függvény segítségével.

A teljes példa az alábbiakban található.

1
2
3
4
5
6

# load numpy array from npy file
from numpy import load
# load array
data = load(‘data.npy’)
# kiírja a tömböt
print(data)

A példa futtatásával betöltjük a fájlt és kiírjuk a tartalmát, megerősítve, hogy mind a betöltés helyesen történt, mind a tartalom megfelel az általunk elvárt kétdimenziós formátumnak.

1
]

Save NumPy Array to .NPZ fájl (tömörítve)

Néha olyan adatokat készítünk elő modellezéshez, amelyeket több kísérletben is újra kell használni, de az adatok nagyok.

Ezek lehetnek előre feldolgozott NumPy tömbök, például egy szövegkorpusz (egész számok) vagy átskálázott képadatok (pixelek) gyűjteménye. Ezekben az esetekben kívánatos az adatokat mind fájlba, mind pedig tömörített formátumba menteni.

Ez lehetővé teszi, hogy a gigabájtnyi adatot több száz megabájtnyira csökkentsük, és hosszú algoritmusfuttatások esetén könnyen továbbíthassuk a felhőalapú számítástechnika más szervereire.

A .npz fájlformátum megfelelő erre az esetre, és támogatja a natív NumPy fájlformátum tömörített változatát.

A savez_compressed() NumPy függvény lehetővé teszi több NumPy tömb mentését egyetlen tömörített .npz fájlba.

3.1 Példa egy NumPy tömb mentésére NPZ fájlba

Ezzel a függvénnyel egyetlen NumPy tömbünket menthetjük tömörített fájlba.

A teljes példa az alábbiakban található.

1
2
3
4
5
6
7

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

A példa futtatása definiálja a tömböt és elmenti egy tömörített numpy formátumú fájlba ‘data.npz’ névvel.

Az .npy formátumhoz hasonlóan a mentett fájl tartalmát nem tudjuk szövegszerkesztővel megvizsgálni, mivel a fájlformátum bináris.

3.2 Példa egy NumPy tömb betöltésére NPZ fájlból

Ezt a fájlt később az előző szakaszban ismertetett load() függvénnyel tölthetjük be.

Ez esetben a savez_compressed() függvény támogatja több tömb egyetlen fájlba történő mentését. Ezért a load() függvény több tömböt is betölthet.

A betöltött tömböket a load() függvény egy dict-ben adja vissza, az első tömb neve ‘arr_0’, a másodiké ‘arr_1’, és így tovább.

Az egyetlen tömbünk betöltésének teljes példája az alábbiakban látható.

1
2
3
4
5
6
7
8

# load numpy array from npz file
from numpy import load
# load dict of array
dict_data = load(‘data.npz’)
# kivonatolja az első tömböt
data = dict_data
# kiírja a tömböt
print(data)

A példa futtatása betölti a tömörített numpy fájlt, amely egy tömbszótárat tartalmaz, majd kinyeri az első elmentett tömböt (csak egyet mentettünk el), majd kiírja a tartalmát, megerősítve, hogy az értékek és a tömb alakja megegyezik azzal, amit először elmentettünk.

1
]

További olvasmányok

Ez a rész további forrásokat tartalmaz a témával kapcsolatban, ha mélyebben szeretne elmélyülni.

Posts

  • How To Load Machine Learning Data in Python
  • A Gentle Introduction to NumPy Arrays in Python
  • How to Index, Slice and Reshape NumPy Arrays for Machine Learning

APIs

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

Összefoglaló

Ebben a bemutatóban felfedezted, hogyan mentheted a NumPy tömböket fájlba.

Közelebbről megtanulta:

  • Hogyan mentheti a NumPy tömböket CSV formátumú fájlba.
  • Hogyan mentheti a NumPy tömböket NPY formátumú fájlba.
  • Hogyan mentse a NumPy tömböket tömörített NPZ formátumú fájlokba.

Kérdése van?
Tegye fel kérdéseit az alábbi megjegyzésekben, és én igyekszem válaszolni.

Fedezd fel a gyors gépi tanulást Pythonban!

Master Machine Learning With Python

Develop Your Own Models in Minutes

…mindössze néhány sor scikit-learn kóddal

Tanuld meg, hogyan:
Machine Learning Mastery With Python

Megtanulhatod az új Ebookomban:
Machine Learning Mastery With Python

Tartalmazza az önképző tananyagokat és a végponttól végpontig tartó projekteket, mint:
Adatok betöltése, vizualizáció, modellezés, tuning, és még sok más…

Végre hozza a gépi tanulást
a saját projektjeihez

Hagyja ki az akadémikusokat. Just Results.

See What’s Inside

Tweet Share Share Share

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.