{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "anaconda-cloud": {}, "hide_input": false, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" }, "latex_envs": { "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 0 }, "name": "mintapelda03.ipynb", "colab": { "name": "kl_py_okt_04.ipynb", "provenance": [], "collapsed_sections": [ "s4jIdvUEseBi", "z6PkYbuhseCC" ], "include_colab_link": true } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "U8abyDHbseAJ", "colab_type": "text" }, "source": [ "

\n", " \n", " \n", "

\n", "\n", "\n", "

\n", "\n", "\n", "\n", "# Python alapok 4\n", "\n", "\n", "\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": { "id": "ACa4BWU2seAL", "colab_type": "text" }, "source": [ "# File-ok kezelése\n", "\n", "\n", "\n", "Nagy mennyiségű adatok feldolgozásánál elengedthetetlen dolog a számítógépek memóriáján (RAM) kívűl a külső tárolókon (merevlemezek, egyéb adathordozók) tárolt file-ok használata is. Az alábbiakban a python alapértelmezett filekezelő függvényeivel ismerkedünk meg először, majd a `numpy` csomag filekezelő rutinjaival barátkozunk meg.\n", "A notebookot - mint mindig - most is kezdjük a már megszokott sorral:" ] }, { "cell_type": "code", "metadata": { "id": "bxNeQzToseAM", "colab_type": "code", "colab": {}, "outputId": "05387914-b4e9-428a-b149-7b1042df62cd" }, "source": [ "%pylab inline" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "_WYz69gLseAQ", "colab_type": "text" }, "source": [ "---\n", "\n", "## A python beépített filekezelő függvényei\n", "\n", "Ebben a fejezetben a `python` egyéb moduloktól független, alapvető fileműveleteket biztosító függvényeivel fogunk megismerkedni. Ezen függvények egy file tartalmát többnyire karakterláncok formájában kezelik, ezért konkrét formátumú adatok beolvasása, illetve kiírása némi bonyodalommal jár, melyeket legtöbbször valamilyen specifikusan az adott feladatra megírt függvény tesz lehetővé. Az alábbi részben a történelmi napfoltszám-megfigyelések [adatainak](http://www.sidc.be/silso/datafiles) az elemzésén keresztül ismerkedünk meg ezekkel a függvényekkel. " ] }, { "cell_type": "markdown", "metadata": { "id": "RFlTkRwYseAQ", "colab_type": "text" }, "source": [ "### File-ok beolvasása" ] }, { "cell_type": "markdown", "metadata": { "id": "_SvV6qLeseAR", "colab_type": "text" }, "source": [ "Egész file beolvasása egyetlen karakterláncba az alábbiak szerint történik. \n", "\n", "Előszöris az `open()` függvény segítségével megnyitjuk a beolvasni kívánt file-t. Az `open()` függvény egy előkészítő függvény, amely arra készíti fel a rendszert, hogy az adott merevelemezen (vagy más adattárolón) fellelhető file-lal dolgozni tudjunk. Legegyszerűbb esetben ez a file nevének a megadásával történik." ] }, { "cell_type": "code", "metadata": { "id": "tATZEHQAseAS", "colab_type": "code", "colab": {} }, "source": [ "file1 = open('data/NAPFOLT/SN_m_tot_V2.0.txt')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "7o1UsbTlseAU", "colab_type": "text" }, "source": [ "A fenti kódsor hatására a `file1` változón keresztül férhetünk hozzá a file tartalmához. A file teljes tartalmát például a következő utasítással tölthetjük be egy karakterlánc formájában az `egeszfile` változóba:" ] }, { "cell_type": "code", "metadata": { "id": "tH4NgXTvseAU", "colab_type": "code", "colab": {} }, "source": [ "egeszfile=file1.read()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "AmTnotXEseAW", "colab_type": "text" }, "source": [ "Figyelem, ne keverjük össze a `file1` és az `egeszfile` változókat! Amint azt fent is említettük, az `egeszfile` egy karakterlánc, a `file1` pedig a file-ból való olvasást, illetve a file-ba való írást segítő segédobjektum, amelyet szokás esetenként (adat)folyam-nak vagy angolul streamnek is nevezni." ] }, { "cell_type": "markdown", "metadata": { "id": "2YmXD0QQseAX", "colab_type": "text" }, "source": [ "Ha már minden olvasás és írás befejeződött, akkor a `close()` utasítással zárhatjuk be a folyamot, azaz ez a parancs szakítja meg a kommunikációt az adattárolóval." ] }, { "cell_type": "code", "metadata": { "id": "HfErhOsjseAY", "colab_type": "code", "colab": {} }, "source": [ "file1.close()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "xje-8MeTseAa", "colab_type": "text" }, "source": [ "Mivel fent betöltöttük a file tartalmát az `egeszfile` stringbe, ezért ennek segítségével bele is pillanthatunk, vizsgáljuk meg például az első 100 karaktert a file-ból:" ] }, { "cell_type": "code", "metadata": { "id": "LX2s0TRQseAa", "colab_type": "code", "colab": {}, "outputId": "a91f25a0-5be5-4707-b947-f179750c0d7d" }, "source": [ "egeszfile[:100]" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "'#1. oszlop ev ho T[ev] napfolt_szam\\n#2. oszlop honap\\n#3. oszlop az ido evben merve \\n#4. oszlop Na'" ] }, "metadata": { "tags": [] }, "execution_count": 5 } ] }, { "cell_type": "markdown", "metadata": { "id": "Lh96v4JnseAc", "colab_type": "text" }, "source": [ "Ha megnézzük magát a [file](data/NAPFOLT/SN_m_tot_V2.0.txt)-t, akkor látható hogy tényleg ezek a dolgok vannak benne. Figyeljük meg hogy a sor vége helyett a `\\n` karakter szerepel! " ] }, { "cell_type": "markdown", "metadata": { "id": "7oZ9pxVXseAd", "colab_type": "text" }, "source": [ "A `read()` függvény előre specifikált számú karakter olvasását is lehetővé teszi. Nyissuk meg ismét az előző file-t ismét:" ] }, { "cell_type": "code", "metadata": { "id": "ux964k3dseAd", "colab_type": "code", "colab": {} }, "source": [ "file1 = open('data/NAPFOLT/SN_m_tot_V2.0.txt')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "g0h55N-9seAf", "colab_type": "text" }, "source": [ "Olvassunk be 10 karaktert a fileból az alábbi módon:" ] }, { "cell_type": "code", "metadata": { "id": "qeHHmkANseAg", "colab_type": "code", "colab": {} }, "source": [ "karakterek1=file1.read(10)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "08CkWsO_seAi", "colab_type": "text" }, "source": [ "A `karakterek1` változó ezután a file első 10 karakterét tartalmazza (vessük össze ezt az `egeszfile[:100]` parancs kimenetével): " ] }, { "cell_type": "code", "metadata": { "id": "1LpvJ-NjseAi", "colab_type": "code", "colab": {}, "outputId": "7a7c908c-1cf0-4e5c-941b-9173195670a1" }, "source": [ "karakterek1" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "'#1. oszlop'" ] }, "metadata": { "tags": [] }, "execution_count": 8 } ] }, { "cell_type": "markdown", "metadata": { "id": "fSd20athseAo", "colab_type": "text" }, "source": [ "Ha ismét meghívjuk a `file1` változó `read()` függvényét, akkor az a következő 10 karaktert olvassa be:" ] }, { "cell_type": "code", "metadata": { "id": "QTbhY9cLseAr", "colab_type": "code", "colab": {} }, "source": [ "karakterek2=file1.read(10)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "xZ2IJrb-seAu", "colab_type": "code", "colab": {}, "outputId": "b9027639-5ad9-4de8-e64f-ef89f7059046" }, "source": [ "karakterek2" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "' ev ho T'" ] }, "metadata": { "tags": [] }, "execution_count": 10 } ] }, { "cell_type": "markdown", "metadata": { "id": "Mxx87YyhseA7", "colab_type": "text" }, "source": [ "Látjuk tehát hogy a `read()` utasítás hatására könyörtelenül haladunk végig a file karakterein: úgy tűnhet, ha már egyszer valamit beolvastunk, akkor azt többé már nem tudjuk! Szerencsére ez nem így van, mivel a `tell()` és a `seek()` függvények segítségével kérdezhetjük le, illetve állíthatjuk be egy megnyitott filefolyam aktuális pozicióját." ] }, { "cell_type": "markdown", "metadata": { "id": "B05DbwvPseA8", "colab_type": "text" }, "source": [ "A `tell()` függvényt alkalmazva a `file1` változóra megkaphatjuk az aktuális folyampoziciót. Ami a jelen esetben 20, hiszen az előző két read parancs 10 karaktert olvasott be!" ] }, { "cell_type": "code", "metadata": { "id": "BmhMaPQQseA8", "colab_type": "code", "colab": {}, "outputId": "03d3660c-3694-4bde-b479-41c19445bc0d" }, "source": [ "file1.tell()" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "20" ] }, "metadata": { "tags": [] }, "execution_count": 11 } ] }, { "cell_type": "markdown", "metadata": { "id": "TvBqyZw8seA_", "colab_type": "text" }, "source": [ "A `seek()` parancs segítségével a file egy teszőleges helyére ugorhatunk. A `seek(n)` függvény alkalmazásával a file `n`-edik karakterére ugrunk. Ha ezután alkalmazzuk a `read()` függvényt, akkor a file tartalmát ettől a poziciótól olvassuk." ] }, { "cell_type": "code", "metadata": { "id": "6Rde_USxseBA", "colab_type": "code", "colab": {}, "outputId": "801d28fd-6c03-48d2-d6ae-ff608a7a0012" }, "source": [ "file1.seek(5)" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "5" ] }, "metadata": { "tags": [] }, "execution_count": 12 } ] }, { "cell_type": "markdown", "metadata": { "id": "ngEXXauzseBC", "colab_type": "text" }, "source": [ "Az alábbi parancs tehát a 5. karaktertől olvas be újabb 10 darab karaktert. " ] }, { "cell_type": "code", "metadata": { "id": "MX3TveCZseBD", "colab_type": "code", "colab": {} }, "source": [ "karakterek3=file1.read(10)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "PTKMKFtvseBF", "colab_type": "code", "colab": {}, "outputId": "207fda24-e9f4-48cf-b690-d123891e4d3d" }, "source": [ "karakterek3" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "'szlop ev '" ] }, "metadata": { "tags": [] }, "execution_count": 14 } ] }, { "cell_type": "markdown", "metadata": { "id": "qeHzjNWQseBH", "colab_type": "text" }, "source": [ "Zárjuk ismét be a file-t!" ] }, { "cell_type": "code", "metadata": { "id": "RsX6bRjxseBH", "colab_type": "code", "colab": {} }, "source": [ "file1.close()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "3VTOju_lseBL", "colab_type": "text" }, "source": [ "Nagyon sok esetben az adatfile-okban hordozott információ táblázatszerűen vannak rendezve. Az file minden sora hasonló tagolással csoportosítja a számunkra értékes adatokat. \n", "Egy megnyitott file minden sorát - mint soronkénti karakterláncok listáját - a readlines függvény segítségével gyárthatjuk le." ] }, { "cell_type": "code", "metadata": { "id": "-5vhig_VseBM", "colab_type": "code", "colab": {} }, "source": [ "file1 = open('data/NAPFOLT/SN_m_tot_V2.0.txt') " ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "qtunAKvCseBO", "colab_type": "code", "colab": {} }, "source": [ "sorok = file1.readlines()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "dau-7ATfseBP", "colab_type": "text" }, "source": [ "Mivel már nincs szükség a a file-ra ezért be is csukjuk azt!" ] }, { "cell_type": "code", "metadata": { "id": "WX5ZEWcEseBQ", "colab_type": "code", "colab": {} }, "source": [ "file1.close() " ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "ASlikRgNseBS", "colab_type": "text" }, "source": [ "A sorok lista minden eleme most tehát egy egy sor a file-ból, vizsgáljuk meg például az első 10 sort:" ] }, { "cell_type": "code", "metadata": { "id": "Nb8tFgNTseBS", "colab_type": "code", "colab": {}, "outputId": "b3dccc7a-74c8-42fd-e23c-fa62fb82520c" }, "source": [ "sorok[0:10]" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "['#1. oszlop ev ho T[ev] napfolt_szam\\n',\n", " '#2. oszlop honap\\n',\n", " '#3. oszlop az ido evben merve \\n',\n", " '#4. oszlop Napfoltok szamanak atlaga\\n',\n", " '#5. oszlop Napfoltok szamanak szorasa, negativ ertekek azt jelentik hogy az informacio nem all rendelkezesre!\\n',\n", " '#6. oszlop Napfolt meresek szama, negativ ertekek azt jelentik hogy az informacio nem all rendelkezesre!\\n',\n", " '1749 01 1749.042 96.7 -1.0 -1 \\n',\n", " '1749 02 1749.123 104.3 -1.0 -1 \\n',\n", " '1749 03 1749.204 116.7 -1.0 -1 \\n',\n", " '1749 04 1749.288 92.8 -1.0 -1 \\n']" ] }, "metadata": { "tags": [] }, "execution_count": 19 } ] }, { "cell_type": "markdown", "metadata": { "id": "74or3ooiseBU", "colab_type": "text" }, "source": [ "Amint látjuk, az első hat sor a '#' karakterrel kezdődik, és minden ilyen sor azt mondja meg hogy a tényleges adatok megfelelő oszlopa mit tartalmaz. A hetedik sortól lefelé viszont szóközökkel elválasztott számok vannak, ez maga a hőn áhitott adat, de sajnos még mindig karakterláncok formájában! " ] }, { "cell_type": "markdown", "metadata": { "id": "LqQkbXdPseBV", "colab_type": "text" }, "source": [ "Az első értékes adatsor a file 7.-sora:" ] }, { "cell_type": "code", "metadata": { "id": "DEnP2LOXseBW", "colab_type": "code", "colab": {}, "outputId": "0bd76e54-eb21-4d6e-e6d4-eb78f08ec593" }, "source": [ "sorok[6]" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "'1749 01 1749.042 96.7 -1.0 -1 \\n'" ] }, "metadata": { "tags": [] }, "execution_count": 20 } ] }, { "cell_type": "markdown", "metadata": { "id": "KdjfMwrsseBY", "colab_type": "text" }, "source": [ "Egy karakterláncot a `split()` parancs segítségével adott karakterek mentén fel tudunk vágni egy listába. A `split()` parancs alapértelmezésben szóközök szerint vágja fel a megjelölt karakterláncot, így az első értékes adatsor oszlopokra szabása az alábbiak szerint történik:" ] }, { "cell_type": "code", "metadata": { "id": "zkNW3VTpseBY", "colab_type": "code", "colab": {}, "outputId": "598623a3-6ea3-4e7a-ad33-dbe9ef8e0e9e" }, "source": [ "sorok[6].split()" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "['1749', '01', '1749.042', '96.7', '-1.0', '-1']" ] }, "metadata": { "tags": [] }, "execution_count": 21 } ] }, { "cell_type": "markdown", "metadata": { "id": "SX6O_hsWseBa", "colab_type": "text" }, "source": [ "Az eredmény tehát egy lista mely tartalmazza az értékes adatokat, ugyan még mindig karakterláncok formájában! \n", "Az egyes elemeket lebegőpontos számmá a már ismert `float()` függvénnyel konvertálhatjuk. Tehát az első adatsor negyedik oszlopából a következő módon készíthetünk hús-vér számot:" ] }, { "cell_type": "code", "metadata": { "id": "-ErorUq8seBb", "colab_type": "code", "colab": {}, "outputId": "6358c2af-e077-4ba7-83bb-ef7ac490d2ff" }, "source": [ "float(sorok[6].split()[3])" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "96.7" ] }, "metadata": { "tags": [] }, "execution_count": 22 } ] }, { "cell_type": "markdown", "metadata": { "id": "ykfSHOGeseBe", "colab_type": "text" }, "source": [ "Ha már egy elemet számmá tudunk konvertálni, akkor egy `for` ciklus segítségével számokat tartalmazó listákba tudjuk rendezni az adatokat a már megszokott módon:" ] }, { "cell_type": "code", "metadata": { "id": "B57AVrRYseBf", "colab_type": "code", "colab": {} }, "source": [ "num_napfolt=[]\n", "meresi_ido=[]\n", "for sor in sorok[6:]:\n", " num_napfolt.append( float(sor.split()[3]) )\n", " meresi_ido.append( float(sor.split()[2]) )" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "nHZldvbHseBg", "colab_type": "text" }, "source": [ "Ábrázoljuk végül a napfoltok számát az évek függvényében:" ] }, { "cell_type": "code", "metadata": { "id": "YLcFOjVtseBh", "colab_type": "code", "colab": {}, "outputId": "8d50355c-98b7-43b5-9a5b-c3b6abe67a5e" }, "source": [ "plot(meresi_ido,num_napfolt)\n", "xlabel('T[ev]')\n", "ylabel('Napfoltszam')" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 24 }, { "output_type": "display_data", "data": { "image/png": "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\nRK5CYII=\n", "text/plain": [ "" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "s4jIdvUEseBi", "colab_type": "text" }, "source": [ "### Mentés\n", "\n", "Az adatok beolvasása mellett sokszor lehet szükség a feldolgozott információ újbóli kiírására. Erre a `python` az adatfolyam típusú változókra alkalmazott `write()` függvényt kínálja. Vizsgáljuk meg, hogy hogy működik a fileírás, egy egyszerű példán! Nyissunk meg egy file-t, amelybe írni szeretnénk, ezt az `open()` függvény `mode` kulcsszavas paraméterén keresztül tudjuk jelezni a `mode='w'` beállítással. Itt a `w` az írási módot jelenti." ] }, { "cell_type": "code", "metadata": { "id": "JRXK9NKDseBj", "colab_type": "code", "colab": {} }, "source": [ "file2=open('data/mentes1.dat',mode='w')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "DnyMlKwIseBk", "colab_type": "text" }, "source": [ "A `file2` folyamba a `write()` függvény segítségével tudunk karakterláncokat írni:" ] }, { "cell_type": "code", "metadata": { "id": "yCRvzXPyseBl", "colab_type": "code", "colab": {}, "outputId": "c485921d-91ce-46e8-ce49-31f16776176a" }, "source": [ "file2.write('#Ez az elso kiirt fileom!\\n')" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "26" ] }, "metadata": { "tags": [] }, "execution_count": 26 } ] }, { "cell_type": "markdown", "metadata": { "id": "AS8mL2CPseBn", "colab_type": "text" }, "source": [ "A write fügvény alapértelmezett visszatérési értéke a file-ba kiírt karakterek száma. A biztonság kedvéért zárjuk be a file-t!" ] }, { "cell_type": "code", "metadata": { "collapsed": true, "id": "4KfSUAAJseBn", "colab_type": "code", "colab": {} }, "source": [ "file2.close()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "JeTLGcngseBq", "colab_type": "text" }, "source": [ "Ha már meglévő file-hoz szeretnénk további karaktereket fűzni, akkor az `open()` függvény `mode` paraméterének `mode='a'` beállításával jelezzük ezt. Az `'a'` karakter itt az append angol szó rövidítése, mely ismerős lehet már számunkra egy, a listákra vonatkozó függvény nevéből." ] }, { "cell_type": "code", "metadata": { "collapsed": true, "id": "YR8x_6K9seBq", "colab_type": "code", "colab": {} }, "source": [ "file2=open('data/mentes1.dat',mode='a')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "VsXViUJdseBs", "colab_type": "text" }, "source": [ "Írjuk ki a mérési idő (`meresi_ido`) és a napfoltok számát tartalmazó (`num_napfolt`) adatokat a már fent létrehozott `data/mentes1.dat` file-ba. \n", "Ezt egy `for` ciklus segítségével fogjuk megtenni:" ] }, { "cell_type": "code", "metadata": { "collapsed": true, "id": "BOHmCLe4seBt", "colab_type": "code", "colab": {} }, "source": [ "for i in range(len(meresi_ido)):\n", " file2.write(str(meresi_ido[i])+' '+str(num_napfolt[i])+'\\n')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "gdFNjYK-seBv", "colab_type": "text" }, "source": [ "A `write()` függvény hasába írt karakterlánc a `meresi_ido` és `num_napfolt` tömbök megfelelő sorában lévő elemet tartalmazza szóközzel elválasztva, illetve a sor végét egy sortörés `'\\n'` -el jelezve." ] }, { "cell_type": "markdown", "metadata": { "id": "w1Wt0-LcseBw", "colab_type": "text" }, "source": [ "Zárjuk ismét be a file-t:" ] }, { "cell_type": "code", "metadata": { "collapsed": true, "id": "K674pm1nseBw", "colab_type": "code", "colab": {} }, "source": [ "file2.close()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "CBIimJl0seBy", "colab_type": "text" }, "source": [ "A beolvasáshoz hasonlóan a kiíratásnál is van lehetőség egész sorok kiírására. Ezt, talán nem túl meglepő módon a `writelines()` függvény valósítja meg. Ez a függvény karakterláncok listáját írja ki egy file-ba egy megnyitott filefolyamon keresztül. " ] }, { "cell_type": "code", "metadata": { "id": "S6uQZOl7seBz", "colab_type": "code", "colab": {} }, "source": [ "file3=open('data/mentes2.dat',mode='w')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "-mISPJYmseB1", "colab_type": "text" }, "source": [ "Ha a lista minden karakterlánca `'\\n'` karakterre végződik, akkor a kiíratás során a file-ban minden listaelem egy-egy külön sorba kerül:" ] }, { "cell_type": "code", "metadata": { "collapsed": true, "id": "Hk0e6B4qseB3", "colab_type": "code", "colab": {} }, "source": [ "sorok=['Ez az elso sor\\n','Ez a masodik sor\\n'];" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "4SDTtmFkseB7", "colab_type": "code", "colab": {} }, "source": [ "file3.writelines(sorok)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "KRy0OPlSseB9", "colab_type": "text" }, "source": [ "Mi történik, ha lemarad a `'\\n'` ? " ] }, { "cell_type": "code", "metadata": { "collapsed": true, "id": "k7nzOY3CseB9", "colab_type": "code", "colab": {} }, "source": [ "sorok=['Ez az harmadik','Ez hova kerult?\\n'];" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "collapsed": true, "id": "_vP8SEb2seB_", "colab_type": "code", "colab": {} }, "source": [ "file3.writelines(sorok)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "collapsed": true, "id": "LzxsmpCaseCA", "colab_type": "code", "colab": {} }, "source": [ "file3.close()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "8U1Qz6h_seCC", "colab_type": "text" }, "source": [ "Vizsgáljuk meg magát a file-t!" ] }, { "cell_type": "markdown", "metadata": { "id": "z6PkYbuhseCC", "colab_type": "text" }, "source": [ "### Különös karakterek karakterláncokban\n", "\n", "A fentiekben már többször is találkoztunk a sortörést jelölő `'\\n' ` karakterrel. Ehhez hasonlóan van néhány más úgynevezett [literális](https://docs.python.org/2.0/ref/strings.html) karakter, amelynek speciális jelentése van. Ezek közül az alábbi táblázatban összefoglalunk néhányat:" ] }, { "cell_type": "markdown", "metadata": { "id": "8WU9YVK3seCD", "colab_type": "text" }, "source": [ "\n", "karakter |\tjelentés\n", "-|-\n", "\\n|\tsortörés\n", "\\r|\tkocsi vissza\n", "\\t|\tvízszintes kihagyás (TAB)\n", "\\v| függőleges kihagyás (TAB)\n", "\\xhh..| hexadecimális karakter hh.. értékkel\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "BYCz2pIiseCD", "colab_type": "text" }, "source": [ "A print függvény segítségével az alábbi példán demonstráljuk a `'\\r'`, `'\\t'`, és a már ismert `'\\n'` hatását:" ] }, { "cell_type": "code", "metadata": { "id": "rnXHXy82seCE", "colab_type": "code", "colab": {}, "outputId": "34208c05-303c-4081-d42e-5b775d87ec20" }, "source": [ "print(\"EZEK ITT NAGYBETUKezek itt kisbetuk\")" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "EZEK ITT NAGYBETUKezek itt kisbetuk\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "jvbwq3HFseCH", "colab_type": "code", "colab": {}, "outputId": "8286f724-f3b3-4872-8a0e-cb2a79e85406" }, "source": [ "print(\"EZEK ITT NAGYBETUK\\rezek itt kisbetuk\")" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "EZEK ITT NAGYBETUK\rezek itt kisbetuk\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "OYTcWCh0seCI", "colab_type": "code", "colab": {}, "outputId": "8f11a41b-ca07-4d46-d789-c776c2f4b99a" }, "source": [ "print(\"EZEK ITT NAGYBETUK\\tezek itt kisbetuk\")" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "EZEK ITT NAGYBETUK\tezek itt kisbetuk\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "l2S9c74dseCL", "colab_type": "code", "colab": {}, "outputId": "2c69b90e-1d0b-46ff-d8fd-aed40dd8d758" }, "source": [ "print(\"EZEK ITT NAGYBETUK\\nezek itt kisbetuk\")" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "EZEK ITT NAGYBETUK\n", "ezek itt kisbetuk\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "a9otzPNsseCM", "colab_type": "text" }, "source": [ "Ezek a karakterek file-ba való írás közben is hasonlóan viselkednek!" ] }, { "cell_type": "markdown", "metadata": { "id": "N-UmWyx9seCN", "colab_type": "text" }, "source": [ "---\n", "\n", "## Numpy filekezelő rutinok" ] }, { "cell_type": "markdown", "metadata": { "id": "0B1XF3KbseCO", "colab_type": "text" }, "source": [ "Amint korábbiakban is láthattuk, a `numpy` csomag `array` típusú változói számos előnyös tulajdonsággal rendelkeznek a sima `list` típusú változókhoz képest. A `numpy` csomag biztosít néhány hasznos filekezelő rutint, melyek az `array` tipusú változók file-ba kiírására, illetve file-okból történő beolvasására használhatóak. Az alábbiakban két érdekes példán keresztül fogjuk megvizsgálni ezeket a függvényeket.\n", "\n", "\n", "Elemezzük Felix Baumgartner adatait. Az ugrás megtett út$--$idő adatait a `data/BAUMGARTNER/h_vs_t` file-ban találjuk. (Vizsgáljuk meg magát a file-t is! ) A file két oszlopnyi számot tartalmaz. Az első oszlop az idő s-ban, a második oszlop az adott időben mért magasság m-ben. Ilyen jellegű egyszerű struktúrájú file-ok beolvasására és az adatok array-ba való töltésére a `numpy` csomag `loadtxt` függvényét használhatjuk:" ] }, { "cell_type": "code", "metadata": { "id": "8ypdNxDgseCP", "colab_type": "code", "colab": {} }, "source": [ "baum_data=loadtxt('data/BAUMGARTNER/h_vs_t')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "3lV8RWntseCT", "colab_type": "text" }, "source": [ "A `baum_data` tömb első oszlopát a a `t` változóba, a második oszlopát pedig a `h` változóba tároljuk:" ] }, { "cell_type": "code", "metadata": { "id": "ulnOfBVbseCT", "colab_type": "code", "colab": {} }, "source": [ "t=baum_data[:,0] # idő\n", "h=baum_data[:,1] # magasság" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "Cj4BqxeOseCU", "colab_type": "text" }, "source": [ "Ábrázoljuk az adatokat! A tengelyfeliratok természetesen nem maradhatnak el!" ] }, { "cell_type": "code", "metadata": { "id": "P4FoPR5YseCV", "colab_type": "code", "colab": {}, "outputId": "c4dd541d-fa0e-4445-f411-68ea23d3066c" }, "source": [ "plot(t,h)\n", "xlabel('Ido [s]')\n", "ylabel('Magassag [m]')" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 50 }, { "output_type": "display_data", "data": { "image/png": "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\nZmXz/wEEDvR0SWSXGwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "LLrJtki3seCW", "colab_type": "text" }, "source": [ "Az ugrással kapcsolatban egy igen fontos kérdés volt, hogy vajon sikerült-e szabadesésben átlépni a hangsebességet? Vizsgáljuk meg, hogy ezen adatok alapján vajon átlépte-e Felix Baumgartner a hanghatárt! Először is szükség van a sebesség időfüggésére. Ezt a magasság$--$idő függvény numerikus deriváltjával fogjuk most meghatározni. \n", "Ha egy $y(x)$ függvényt mintavételezésével véges darab $x_i,y_i$ párt kapunk, akkor az $y(x)$ függvény numerikus deriváltját a következő differencia hányadossal közelíthetjük:\n", "\n", "\n", " $$\\left . \\frac{\\mathrm{d}y}{\\mathrm{d}x}\\right|_{x_i} =\\frac{y_{i+1}-y_i}{x_{i+1}-x_i} $$" ] }, { "cell_type": "markdown", "metadata": { "id": "OYIJJEz_seCW", "colab_type": "text" }, "source": [ "Definiáljunk most egy függvényt, mely két ugyanolyan hosszúságú tömb `x` és `y` adataiból legenerálja a két tömb numerikus derviáltját. Figyeljük meg, hogy az utolsó és az első adatpontban a fenti képlettől egy kicsit eltérő módon járunk el." ] }, { "cell_type": "code", "metadata": { "id": "nQwdV1HkseCX", "colab_type": "code", "colab": {} }, "source": [ "# numerikus derivált függvény\n", "def nderiv(y,x):\n", " \"Első szomszéd differenciál\"\n", " n = len(y) # adatpontok száma\n", " d = zeros(n) # változó inicializálás. A zeros() függvény tetszőleges alakú és 0-kat tartalmazó arrayt gyárt\n", " # mivel a legegyszerűbb numerikus differenciálás nem szimmetrikus a végpontokat\n", " # kicsit másképp kezeljük mint a tömb belsejében lévő pontokat\n", " for i in range(1,n-1):\n", " d[i] = (y[i+1]-y[i])/(x[i+1]-x[i]) #egy általános pont deriváltja\n", " d[0] = (y[1]-y[0])/(x[1]-x[0]) #az első pont deriváltja\n", " d[n-1] = (y[n-1]-y[n-2])/(x[n-1]-x[n-2]) # az utolsó pont deriváltja\n", " return d\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "lWtWujT1seCY", "colab_type": "text" }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "id": "zt_yyDfDseCY", "colab_type": "text" }, "source": [ "Az nderiv függvény segítségével a sebesség meghatározható." ] }, { "cell_type": "code", "metadata": { "id": "7Ed_qz6rseCZ", "colab_type": "code", "colab": {} }, "source": [ "v=nderiv(h,t) # Figyelem az első változó a h a második a t!!!" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "ewguyU8FseCc", "colab_type": "text" }, "source": [ "Vizsgáljuk meg a sebesség$--$idő függvényt!" ] }, { "cell_type": "code", "metadata": { "id": "exBqxRcFseCc", "colab_type": "code", "colab": {}, "outputId": "2a672591-7560-4aa4-e9cd-931a7cf7b904" }, "source": [ "plot(t,v)\n", "xlabel('Ido [s]')\n", "ylabel('Sebesseg [m/s]')" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 53 }, { "output_type": "display_data", "data": { "image/png": "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\nlyfPW43+/eG7342/ls8+O+1o0jF5ciyrcvfdUVMptG9+s/DXFJHcyiapfA4Y6O4b8h1Mmm64IUYg\nrVyZdiTpmTw5+lAmTICRI9OORkRKUTbNXy8D3fIdSNoqKmDPPWNvkLaoujp2cTzgAFi8OBKsiMj2\nyiapdANeNbO/m9n42q+WXtjMPmtmL5vZ5sw+GjPrb2YfmNnU5OuWjNdGmNkMM5trZje0NIZtdevW\nNpPK2LExW37o0FhpuH37tCMSkVKVTfPXVXm69kzgP4Hb6nntNXevbzDArcTCllPM7FEzO97d/56r\ngLp3h+nTc3W20rBhA1xzTaw+rG18RaSlmkwq7p6XHdzdfQ6AWX27cPCRMjPbDShz9ylJ0V3AqUBO\nk0pbq6nUblD2l7/Aj3+cdjQiUuoabP4ys7819eZsjmmmAUnT11NmVju4tS+wMOOYhUlZzrTF5q+3\n3ormrpoa1VREpOUaq6kc2UTfiQGNfgyZ2USg9zbvceBKd29oJ/J3gD3cfUXS1/KgmRXk465797Y1\n+uvTn4ZRo+CTn4S//z36VEREWqKxpDI6i/c3OszY3Y/dvnDA3TcCK5LHU83sdWAIsAioyDi0X1LW\noLFjx374uLKyksrKykav3RZqKs89F8OF166Fv/0NFi2CE0+Er389Rr+JSNtSVVVFVVVVzs5nsf18\neszsKeC77v5i8rwcqHb3LWY2EHgaGObuK81sErG45RTgEeBX7l7vIiJm5tv7s61ZE8u0vP9+C36g\nIjdoENxzD2zaVDdr/te/jqQiImJmuHt9fd1ZSW35RDM71czeBg4F/mZmjyUvHQXMMLOpwDjg6+5e\n2yh1EbG45VxgXkMJpbm6dIm+hY0bc3nW4lJdHfNQXn4Z9tgjyvr3TzcmEWk9Uq+p5EtzaioQG1DN\nnl23aVRrsnkzdOwIN98cP2OPHnD11bERlzrpRQRKuKZSrFrzsOJVq2L48OLFMHNmNH9df300iYmI\n5EI2m3TNJEZsZVoF/Bv4ibu3qnV9W3NSqa6O74sWRfPX/vvHyC8RkVzJZkb9Y8Bm4N7k+ZnAzkDt\nHvafzktkKenWrfUOK65NKi+9FMux9O7d+PEiItsrm6TyyW2WTJlpZlPdfYSZfTFfgaVl6NBYrff4\n49OOJPeqq6OvaNo0qKyMxCIikkvZ9Km0N7MPF0I3s48DtUsObspLVCn64hfhrrui76G1qa6OJi+o\n+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\nmXDd0/AHAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "FTyqCxayseCe", "colab_type": "text" }, "source": [ "Mivel általában a hang terjedési sebessége függ a magasságtól, ezért annak érdekében, hogy megtudjuk, hogy sikerült-e áttörni a hanghatárt, célszerű a sebességet a magasság függvényében ábrázolni:" ] }, { "cell_type": "code", "metadata": { "id": "svYmFRkMseCe", "colab_type": "code", "colab": {}, "outputId": "b94f1de7-9103-4ad5-d6fb-ac80ab533606" }, "source": [ "plot(h,abs(v))\n", "xlabel('Magassag [m]')\n", "ylabel('Sebesseg [m/s]')" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 54 }, { "output_type": "display_data", "data": { "image/png": "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\njQcAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "e9s1Q1lGseCh", "colab_type": "text" }, "source": [ "A wikipédián található [adatok](https://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Comparison_US_standard_atmosphere_1962.svg/2000px-Comparison_US_standard_atmosphere_1962.svg.png) alapján a hangsebesség 25km magasságban valamivel 300 m/s alatt van. Ezen a magasságon Felix sebessége 350 m/s körül mozgott, tehát a rekord - a mérési adatok alapján - sikerült!\n" ] }, { "cell_type": "markdown", "metadata": { "id": "9Mm55T7PseCh", "colab_type": "text" }, "source": [ "Vizsgáljuk meg a `loadtxt()` függvény néhány paraméterét is! Ezt a feladatot a 2014-es ebola járvány statisztikai adatait tartalmazó file segítségével fogjuk megtenni." ] }, { "cell_type": "markdown", "metadata": { "id": "EDeCKpJDseCh", "colab_type": "text" }, "source": [ "Próbáljuk meg betölteni a `'data/EBOLA/ebola_vesszoesszazalekjel.txt'` - filet!" ] }, { "cell_type": "code", "metadata": { "id": "LyOvT5AcseCi", "colab_type": "code", "colab": {}, "outputId": "2d77c8ae-ea08-43f6-c0ba-3935f2310dd9" }, "source": [ "ebola_data=loadtxt('data/EBOLA/ebola_vesszoesszazalekjel.txt')" ], "execution_count": 0, "outputs": [ { "output_type": "error", "ename": "ValueError", "evalue": "could not convert string to float: b'%'", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mebola_data\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mloadtxt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'data/EBOLA/ebola_vesszoesszazalekjel.txt'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32m/home/oroszlany/.local/lib/python3.5/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36mloadtxt\u001b[1;34m(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin)\u001b[0m\n\u001b[0;32m 928\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 929\u001b[0m \u001b[1;31m# Convert each value according to its column and store\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 930\u001b[1;33m \u001b[0mitems\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mconv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mval\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mconv\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mval\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconverters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvals\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 931\u001b[0m \u001b[1;31m# Then pack it according to the dtype's nesting\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 932\u001b[0m \u001b[0mitems\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpack_items\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpacking\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/oroszlany/.local/lib/python3.5/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36m\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 928\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 929\u001b[0m \u001b[1;31m# Convert each value according to its column and store\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 930\u001b[1;33m \u001b[0mitems\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mconv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mval\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mconv\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mval\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconverters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvals\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 931\u001b[0m \u001b[1;31m# Then pack it according to the dtype's nesting\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 932\u001b[0m \u001b[0mitems\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpack_items\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpacking\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/oroszlany/.local/lib/python3.5/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36mfloatconv\u001b[1;34m(x)\u001b[0m\n\u001b[0;32m 657\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;34mb'0x'\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 658\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mfloat\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfromhex\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0masstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 659\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfloat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 660\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 661\u001b[0m \u001b[0mtyp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mValueError\u001b[0m: could not convert string to float: b'%'" ] } ] }, { "cell_type": "markdown", "metadata": { "id": "_ndbTDksseCk", "colab_type": "text" }, "source": [ "A szemfüles halgatók talán sikeresen ki tudják bogozni a fenti hibaüzenetet: \n", "\n", "*A '%' jelet nem tudom számmá konvertálni!*\n", "\n", "Ha megvizsgáljuk magát a file-t, akkor láthatjuk, hogy a napfoltadatoktól eltérő módon itt az adatokat szolgáltató személy a legtöbbször alkalmazott '#'-jel helyett a '%'-ot alkalmazta! Jelezzük ezt a függvénynek a `comments='%'` kapcsoló segítségével!" ] }, { "cell_type": "code", "metadata": { "id": "Fs5pee0pseCk", "colab_type": "code", "colab": {}, "outputId": "40a8ca7f-5557-48b2-eb77-95c78568b5c6" }, "source": [ "ebola_data=loadtxt('data/EBOLA/ebola_vesszoesszazalekjel.txt',comments='%')" ], "execution_count": 0, "outputs": [ { "output_type": "error", "ename": "ValueError", "evalue": "could not convert string to float: b'0,'", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mebola_data\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mloadtxt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'data/EBOLA/ebola_vesszoesszazalekjel.txt'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcomments\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'%'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32m/home/oroszlany/.local/lib/python3.5/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36mloadtxt\u001b[1;34m(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin)\u001b[0m\n\u001b[0;32m 928\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 929\u001b[0m \u001b[1;31m# Convert each value according to its column and store\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 930\u001b[1;33m \u001b[0mitems\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mconv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mval\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mconv\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mval\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconverters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvals\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 931\u001b[0m \u001b[1;31m# Then pack it according to the dtype's nesting\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 932\u001b[0m \u001b[0mitems\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpack_items\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpacking\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/oroszlany/.local/lib/python3.5/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36m\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 928\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 929\u001b[0m \u001b[1;31m# Convert each value according to its column and store\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 930\u001b[1;33m \u001b[0mitems\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mconv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mval\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mconv\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mval\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconverters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvals\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 931\u001b[0m \u001b[1;31m# Then pack it according to the dtype's nesting\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 932\u001b[0m \u001b[0mitems\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpack_items\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpacking\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/home/oroszlany/.local/lib/python3.5/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36mfloatconv\u001b[1;34m(x)\u001b[0m\n\u001b[0;32m 657\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;34mb'0x'\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 658\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mfloat\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfromhex\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0masstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 659\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfloat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 660\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 661\u001b[0m \u001b[0mtyp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mValueError\u001b[0m: could not convert string to float: b'0,'" ] } ] }, { "cell_type": "markdown", "metadata": { "id": "W5dMX8Q9seCp", "colab_type": "text" }, "source": [ "Ismét hiba üzenet:\n", "\n", " *a '0,' karakterláncot nem tudom számmá konvertálni !*\n", " \n", "Ha megnézzük a file-t akkor láthatjuk hogy most szóközök helyett az oszlopok bizony vesszővel, azaz a `','`-karakterrel vannak elválasztva! Jelezzük ezt a függvénynek a `delimiter=','` kapcsoló segítségével!" ] }, { "cell_type": "code", "metadata": { "id": "dZQK6SQ0seCq", "colab_type": "code", "colab": {} }, "source": [ "ebola_data=loadtxt('data/EBOLA/ebola_vesszoesszazalekjel.txt',comments='%',delimiter=',')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "TaLx_sh9seCs", "colab_type": "text" }, "source": [ "Így most már be tudtuk tölteni a file-t!" ] }, { "cell_type": "markdown", "metadata": { "id": "yvTVvpdSseCt", "colab_type": "text" }, "source": [ "A `usecols` és az `unpack` kulcsszavak segítségével specifikálhatjuk azt, hogy melyik oszlopokra vagyunk kíváncsiak, illetve hogy kicsomagolható formában térjen vissza a függvény.\n", "Beleolvasva szemmel a file-ba felvilágosítást kaphatunk, hogy melyik oszlopban milyen adat szerepel.\n", "Az alábbi minta például a `Nap,GuinLab,LibLab,NigLab,SLLab` és `SenLab` tömbökbe tölti be az országonkénti laboratóriumban kivizsgált megbetegedések számát, illetve a járvány kitörése óta eltelt napok számát." ] }, { "cell_type": "code", "metadata": { "id": "kKlDfWN6seCv", "colab_type": "code", "colab": {} }, "source": [ "Nap,GuinLab,LibLab,NigLab,SLLab,SenLab=loadtxt('data/EBOLA/ebola_vesszoesszazalekjel.txt',\n", " comments='%',\n", " usecols=(0,3,6,9,12,15),\n", " unpack=True,\n", " delimiter=',')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "fccnE-E-seCw", "colab_type": "text" }, "source": [ "Ábrázoljuk a fenti adatok közzül a Guineában vizsgált fertőzések számát az idő függvényében:" ] }, { "cell_type": "code", "metadata": { "id": "m7ct3FYxseCx", "colab_type": "code", "colab": {}, "outputId": "d5087b8e-3654-439d-8808-8edebb5204da" }, "source": [ "plot(Nap,GuinLab)\n", "xlabel('Nap')\n", "ylabel('Esetek szama')" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 59 }, { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZMAAAEPCAYAAACHuClZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xnc1XP+//HHizaixJAWURMppgxKxLjIOnzL2teYBWEY\n6zCoDOqH+Y6MZsYyzUyMlMlSZgZjTeqyVCZLqK6kQaXFlVEyaLmq1++P9+fScVxXnes6n3M+55zr\neb/dzu0653Od5dXHqaf3572ZuyMiIpKNrZIuQEREip/CREREsqYwERGRrClMREQkawoTERHJmsJE\nRESyltMwMbO/mFmlmb2dcqyVmU00s3lm9qyZtUz53RAzm29mc83smJTj+5vZ22b2rpn9Ppc1i4hI\n3eW6ZTIaODbt2GBgkrt3ASYDQwDMrBswAOgKHA+MNDOLXvNH4Fx33wvYy8zS31NERBKU0zBx95eB\nlWmH+wNjovtjgJOi+/2Ah9x9vbsvAOYDvcxsV2B7d381et7YlNeIiEgBSKLPZBd3rwRw94+AXaLj\n7YAPU563JDrWDliccnxxdExERApEIXTAaz0XEZEi1yiBz6w0s9buXhldwloeHV8C7JbyvPbRsdqO\n18jMFE4iIvXg7rblZ9UsHy0Ti27VHgfOju6fBTyWcvwMM2tiZh2BzsCM6FLYKjPrFXXI/yTlNTVy\nd91iuA0dOjTxGkrppvOp81nIt2zltGViZg8AZcBOZrYIGArcAkwws4HAQsIILty9wszGAxVAFXCR\nb/oTXgzcBzQDnnL3Z3JZt4iI1E1Ow8Tdz6zlV0fV8vxfA7+u4fjrwHdiLE1ERGJUCB3wUqDKysqS\nLqGk6HzGq6GfzwcfhN/8JukqNrE4rpUVEjPzUvsziYikWrcO9t4bRo+Gww+P5z3NDC/wDngREYnR\nPfdAly7xBUkc1DIRESkiX3wBe+4JTz4J3/1ufO+rlomISANyxx1w2GHxBkkc1DIRESkSK1fCXnvB\n1KnhZ5zUMhERaSCGD4eTT44/SOKglomISBFYtgz23Rfeegvat4///bNtmShMRESKwEUXQfPmuZtb\nojBJozARkVLz3ntw0EEwbx7stFNuPkN9JiIiJe6GG+Dyy3MXJHFQy0REpIC99RYceyzMnw/bb5+7\nz1HLRESkhP3yl3DttbkNkjgksTmWiIhkYOpUmD0b/va3pCvZMrVMREQKkDsMHgzDhkHTpklXs2UK\nExGRAvT007BiBfz4x0lXkhmFiYhIgdm4MfST3HwzbL110tVkRmEiIlJgxo8Pl7ZOOinpSjKnocEi\nIgWkqgq6doVRo+DII/P3uRoaLCJSQu69Fzp2zG+QxEEtExGRAvHll2FF4H/8A3r2zO9nq2UiIlIi\n7roLevfOf5DEQS0TEZEC8OmnoVXywguhzyTf1DIRESkBt90GJ56YTJDEQS0TEZGEffQR7LMPzJwJ\nHTokU4P2M0mjMBGRYnPppdCoEfzud8nVoDBJozARkWLywQdw4IHwzjuw887J1aE+ExGRIjZ0aGiZ\nJBkkcdAS9CIiCZk9G559Nmx8VezUMhERSch118GgQdCiRdKVZE8tExGRBEyfDq+/Dg89lHQl8VDL\nREQkz9zDEvPDhkGzZklXEw+FiYhInj33HCxbBmedlXQl8VGYiIjk0caNMGQI3HRTmFtSKhQmIiJ5\n9Le/gRmcemrSlcRLkxZFRPJk/fqwbMqdd8IxxyRdzdcV7aRFM7vCzGab2dtmNs7MmphZKzObaGbz\nzOxZM2uZ8vwhZjbfzOaaWYH9ZxAR2bL77oO2beHoo5OuJH6JtEzMrC3wMrC3u68zs4eBp4BuwCfu\nfquZDQJauftgM+sGjAN6Au2BScCeNTVB1DIRkUK0Zg3suSdMmBD2LCk0RdsyAbYGmptZI2AbYAnQ\nHxgT/X4McFJ0vx/wkLuvd/cFwHygV37LFRGpv5Ej4YADCjNI4pDIWAJ3X2pmI4BFwJfARHefZGat\n3b0yes5HZrZL9JJ2wPSUt1gSHRMRKXiffQa33AKTJyddSe4kEiZmtgOhFbI7sAqYYGY/BNKvT9Xr\netWwYcO+ul9WVkZZWVm96hQRicOIEXD88bDvvklXskl5eTnl5eWxvV9SfSanAce6+/nR4x8DvYEj\ngTJ3rzSzXYEp7t7VzAYD7u7Do+c/Awx193/V8N7qMxGRgrF8edg98fXXYY89kq6mdsXaZ7II6G1m\nzczMgL5ABfA4cHb0nLOAx6L7jwNnRCO+OgKdgRn5LVlEpO7+7//gzDMLO0jikFSfyQwzewSYCVRF\nP0cB2wPjzWwgsBAYED2/wszGEwKnCrhIzQ8RKXQLF8L990NFRdKV5J4mLYqI5Mg550C7dnDzzUlX\nsmXZXuYqoZVhREQKR0UFPPkkvPtu0pXkh9bmEhHJgeuvh6uugh12SLqS/NBlLhGRmM2YAaecElol\n226bdDWZKdbRXCIiJevaa0PLpFiCJA4KExGRGE2aFEZxDRyYdCX5pTAREYlJ9Xa8N90EjRsnXU1+\nKUxERGLy4INhz5IBA5KuJP/UAS8iEoNPP4Vu3cJOigcfnHQ1dZdtB7zCREQkBpdcAuvWwahRSVdS\nP5q0KCKSsNdeg0ceaRjLptRGfSYiIlnYsAEuvBCGD4cdd0y6muQoTEREsvCnP0Hz5vCTnyRdSbLU\nZyIiUk/LlkH37lBeDvvsk3Q12VEHfBqFiYjky5lnQocOYUveYqcOeBGRBEyaBNOmwd13J11JYVCf\niYhIHa1dCxdfDHfeGfpLRGEiIlJnt94a9nX/n/9JupLCoT4TEZE6+Pe/oXdveOON0F9SKrQEvYhI\nnriHme7XXFNaQRIHhYmISIYeeQQWL4Yrrki6ksKjy1wiIhn47LOwkOODD8JhhyVdTfw0zySNwkRE\ncuGKK2DVKrj33qQryQ3NMxERybGZM+GBB2DOnKQrKVzqMxER2YyNG+FnP4Nf/Qq+9a2kqylcChMR\nkc24+27YaquGt6d7XanPRESkFsuXw777hqVTundPuprcUgd8GoWJiMTlrLNg553httuSriT31AEv\nIpID5eUwZUrD3j2xLtRnIiKSZt06uOgi+P3vYbvtkq6mOChMRETSjBgBHTvCyScnXUnx2GKfiZnt\nCfwa6AY0qz7u7p1yW1r9qM9ERLLxwQfQsye8+moIlIYiHws9jgb+CKwHjgDGAn+t7weKiBQqd7js\nMrjyyoYVJHHIJEy2cffnCa2Yhe4+DDght2WJiOTfY4+FJeavuirpSopPJqO51prZVsB8M7sEWAKo\nS0pESsrnn4dWyZgx0KRJ0tUUn0z6THoCc4EdgJuAlsCt7v5K7surO/WZiEh9XH01VFbC2LFJV5KM\nop20aGYtgXuAfYGNwEDgXeBhYHdgATDA3VdFzx8SPWc9cLm7T6zlfRUmIlIns2ZB374wezbsskvS\n1SQj52FiZgcCvyT8A//VZTF3z2pxATO7D3jB3UebWSOgOXAt8Im732pmg4BW7j7YzLoB44CeQHtg\nErBnTamhMBGRuti4Eb73PfjRj+DCC5OuJjn5mAE/DrgamEVoQWTNzFoAh7n72QDuvh5YZWb9gcOj\np40ByoHBQD/goeh5C8xsPtAL+Fcc9YhIw3XffVBVBT/9adKVFLdMwuRjd3885s/tCPzHzEYDPYDX\ngJ8Drd29EsDdPzKz6gZnO2B6yuuXRMdEROrtP/+BIUPgmWfCysBSf5mEyVAzuwd4HlhbfdDd/57l\n5+4PXOzur5nZ7wgtkPTrU7peJSI5M2gQ/OAH8N3vJl1J8cskTM4B9gYas+kylwPZhMli4EN3fy16\n/DdCmFSaWWt3rzSzXYHl0e+XALulvL59dKxGw4YN++p+WVkZZWVlWZQqIqVo6lR49tmGu5BjeXk5\n5eXlsb1fJh3w89y9S2yfuOl9XwDOd/d3zWwosG30qxXuPryWDviDCJe3nkMd8CJST1VVsP/+cP31\nMGBA0tUUhnx0wE8zs27uHnd+XwaMM7PGwPuEFtDWwHgzGwgsBAYAuHuFmY0HKoAq4CIlhojU1+23\nQ9u2cPrpSVdSOjJpmcwFvg18QOgzMcCzHRqcK2qZiMjmLFoUWiWvvAKdOyddTeHIxzyT3Ws67u4L\n6/uhuaQwEZHNOf98aNMGbrwx6UoKS84vc1WHRjRMt9kWni4iUtCefx6eeCLpKkrPFkdWm1m/aJLg\nB8ALhGVOns5xXSIisVu6FFatgr33TrqS0pPJNJ2bgN7Au+7eEegLFOQijyIimzN1KhxyiCYo5kIm\np7TK3T8BtjKzrdx9CnBgjusSEYnd1KnQp0/SVZSmTMLkUzPbDniRMJT3duCL3JYlIhK/qVPh0EOT\nrqI0ZTKaqzmwmhA8PyTsZzIuaq0UHI3mEpGafP45tG4Nn3wCzTSU6BvysQf8lUA7d1/v7mPc/Q7g\n1Pp+oIhIEmbMgP32U5DkSiZhcinwjJkdkXKsAa/6LyLF6OWX1V+SS5mEyRLgeOAWM7s6OlbvppCI\nSBLU+Z5bGQ2Qc/dFhE2rupnZBGCbnFYlIhKjDRvC8imHHJJ0JaUrkzB5DcDd17j7OYTdD5vksigR\nkTjNmhWWUNl556QrKV1bDBN3P7/6vpm1Al5y9045rUpEJEa6xJV7mSynUm5mLcxsR+AN4G4z+23u\nSxMRiYfml+ReJpe5Wrr7Z8ApwFh3Pwg4KrdliYjERyO5ci+TMGlkZm0IG1VprU0RKSqLFsGaNbDn\nnklXUtoyCZMbgWeBf7v7q2bWCZif27JEROJR3V9imtCQU1tcTqXYaDkVEUl1ySWwxx5w1VVJV1LY\n8rGciohI0VLne36oZSIiJeuzz6BtW1ixAppodtxm5bxlYmZNazi2Y30/UEQkX155BfbfX0GSD5lc\n5vq7mTWufhCN7HoudyWJiMRDl7jyJ5MweRQYb2Zbm9kehJFdQ3JZlIhItp54AkaOhFNOSbqShqHR\nlp7g7nebWRNCqOwBXODu03JdmIhIff3hD/CrX4VAOVCbjOdFrWFiZlemPgQ6AG8Cvc2st7trSRUR\nKSgbN8LVV8OTT4ZZ7520imDebK5lsn3a47/XclxEJHFffgk//nHYlnfaNNhRw4TyKuOhwWa2rbt/\nmeN6sqahwSINz/Ll0K8fdO4Mf/kLNP3GGFTZknwMDT7YzCqAd6LHPcxsZH0/UEQkTu+8AwcfDMcc\nA/ffryBJSiajuX4PHAt8AuDubwHfy2VRIiKZeOEFOPxwuO46uPFGrb+VpC2O5gJw9w/t6/+VNuSm\nHBGRzIwbB1dcAQ88AEdpU4zEZRImH5rZIYBHkxcvB+bmtiwRkdrdeSeMGAGTJ8O++yZdjUAGHfBm\n9i3gdsKGWAZMBC5z9xW5L6/u1AEvUtrWroV27WD6dO1REqdsO+AzaZl0cfcfpn1oH2BqfT9URKS+\n/vlP6N5dQVJoMumAvzPDYyIiOXfffXD22UlXIek2NwP+YOAQYOe02fAtgK1zXZiISLply8LijQ8/\nnHQlkm5zl7maANtFz0md9f4ZcFouixIRqckf/gCnnQbNmyddiaTLpAN+d3dfmIsZ8Ga2FfAasNjd\n+5lZK+BhYHdgATDA3VdFzx0CDATWA5e7+8Ra3lMd8CIlaPFi6NEDZs6EDh2Srqb05GPb3rY5nAF/\nOVCR8ngwMMnduwCTiZa6N7NuwACgK3A8MNJM05NEGpLrroMLLlCQFKrEZsCbWXvg+8A9KYf7A2Oi\n+2OAk6L7/YCH3H29uy8A5gO9sq1BRIrDzJnwzDMweHDSlUhtMgkT3P3DtENxzID/HXA1kHpNqrW7\nV0af+RGwS3S8HZBaw5LomIiUOHe46ioYOhRatEi6GqlNJmHytRnwZnYVWc6AN7MTgEp3f5MwEbI2\n6vwQaeCeegqWLoXzzku6EtmcTCYtXkiYAd+O0CKYCFyc5ef2AfqZ2feBbYDtzex+4CMza+3ulWa2\nK7A8ev4SYLeU17ePjtVo2LBhX90vKyujrKwsy3JFJN/cYfx4uOyyMLekceOkKyot5eXllJeXx/Z+\nGe9nkitmdjjwi2g0163AJ+4+3MwGAa3cfXDUAT8OOIgQas8Be9Y0bEujuUSKX2UlXHQRzJ0Lo0fD\nQQclXVHpy8d+JreaWYvoEtfzZvaxmf2ovh+4BbcAR5vZPKBv9Bh3rwDGE0Z+PQVcpMQQKT3uYUJi\njx5huZQ33lCQFItM5pm86e77mdnJwInAlcCL7t4jHwXWlVomIsVp+fLQGqmoUGskCfmYZ1Ldr3IC\nMKF6EqGISBzWrIE//Sks3ti5s1ojxSqTDvgnzOwdYDXwMzPbGViT27JEpNR9+in88Y9wxx3Qsyc8\n8QQceGDSVUl9ZdQBb2Y7AqvcfYOZNQe2j+aBFBxd5hIpfHPmwHHHwRFHwDXXaIOrQpCzy1xmdk3K\nw77uvgHA3b8ALqvvB4pIw+QO774Ld98NffvCrbfC2LEKklJRa8vEzN5w9/3T79f0uJCoZSJSGNat\nC8ugvPxyuE2dCttsA4ceCueeC0cemXSFkiqXOy1aLfdreiwiAoQ9R4YPh3vvhU6dQnj87/+GvpHd\ndtvy66U4bS5MvJb7NT0WkQauOkTGjg07Ic6bB23aJF2V5MvmwqSHmX1GaIVsE90netws55WJSFGo\nDpH77w8hUlEBu+6adFWSb7WGibtra14RqVVFRRja+8ADIUTmzFGINGSZzDMRkQZs9Gh46CH44gv4\n/PNNP81g4ECFiASJL/QYN43mEonPww/DL34BI0dCq1Zh7/Xttgs/W7eGRvrf0ZKR7WguhYmI1Gjy\nZDjjDJg0KSx1IqUtH2tziUgD8+abIUjGj1eQSGYUJiLyNR98ACecEC5taV85yZTCRES+UlkJxx4L\n114Lp52WdDVSTNR9JtKALVsWljmZOjUseVJRAYMGwcXZbswtDY464EVKXFUVLF0KixZtur3zTgiQ\nFSugT59wO/TQsAR8M01JbpA0miuNwkQaEndYufLrQbFoEXz44ab7lZVhGG+HDmFtrA4dwiZUffpA\n166wlS52CwqTb1CYSKFZsSL8o9+0abg1ahQm/KVavhymTw8bRn3xxTcnCKYe+/zz8LyVK8N7b7NN\nCIjUW3VodOgAbdtC48bJ/NmleChM0ihMpFC89x4MGQJPPx3+MV+7Ntw2btwULNXh8sUXcMgh8K1v\nfX1iYPXP9GM77BAmEbZqFcJEJFu5XIJeROrhP/+Bm2+Gv/4VrrgC7rsPtt120+83bAihsm7dpp9t\n2mg2uRQ3fX1FYrJ6ddiz4ze/Cft3VFTALrt883lbbx3CJTVgRIqdwkQkSxs3wrhxcN11cMABYZRU\nly5JVyWSXwoTkSxMmgRXXx2G044bF4bXijREChORepg1C665BubPh1//OswWTx+hJdKQaIS5SB0s\nWQLnngtHHQXHHx/6RU4/XUEiopaJSA2qqsLEv/ffD7f33gu3KVPg/PPD/uY77JB0lSKFQ/NMpEFz\n37Q2VXVovP9+aIG0aQOdOsG3vx1+duoUZo23b5901SLx06TFNAoTycSKFTB2LIwaFQLlhBPCEiPV\nodGhAzRpknSVIvmjSYsiGXIPK+OOGgX//CeceCL8+c9hBJb6PESyo5aJlLz0VshPfwo/+QnstFPS\nlYkUDrVMRGqgVohIfqllIiXn3/+G/v3DzHS1QkQyow74NAoTOfVU6N4dbrhBrRCRTClM0ihMGrZ/\n/SvMRn/3XS3NLlIX2YaJZsBLSVi/HiZPDnuXDx2qIBHJt0TCxMzam9lkM5tjZrPM7LLoeCszm2hm\n88zsWTNrmfKaIWY238zmmtkxSdQthWXNGnjiCRg4EHbdFQYNggED4Oyzk65MpOFJ5DKXme0K7Oru\nb5rZdsDrQH/gHOATd7/VzAYBrdx9sJl1A8YBPYH2wCRgz5quZ+kyV2n773/hqafg73+HZ5+FHj3g\nlFPg5JPDREMRqZ+iHBrs7h8BH0X3PzezuYSQ6A8cHj1tDFAODAb6AQ+5+3pggZnNB3oB/8pz6ZKg\np56CM84IS5qcckrYiKp166SrEhEogHkmZrYHsB/wCtDa3SshBI6ZVe9T1w6YnvKyJdExaSBWrYIL\nLghzRg4/fMvPF5H8SjRMoktcjwCXRy2U9OtT9bpeNWzYsK/ul5WVUVZWVt8SpUAMHgzf/76CRCQu\n5eXllJeXx/Z+iQ0NNrNGwBPA0+5+e3RsLlDm7pVRv8oUd+9qZoMBd/fh0fOeAYa6+zcuc6nPpPS8\n+CKceSbMmQMtW275+SJSd8U8NPheoKI6SCKPA2dH988CHks5foaZNTGzjkBnYEa+CpXkrFkT9g+5\n6y4FiUghS2o0Vx/gRWAW4VKWA9cSAmI8sBuwEBjg7p9GrxkCnAtUES6LTazlvdUyKSG//GWYgDhh\nQtKViJQ2zYBPozApHW+9BUcfDW+/HeaRiEjuFPNlLpFarV8f9lq/5RYFiUgxUMtECkJVFbz+euhs\nf+mlsHx8WVmYnKjFGkVyT5e50ihMisPq1TB9egiOF1+EGTPCXuvf+x4cdli4qUUikj8KkzQKk8K2\ndCnceSfcfTfstdem8OjTB3bYIenqRBquolxORRqe2bNhxAh47DH40Y9CS6RTp6SrEpG4KEwkZ9zD\nsvC33QZvvgmXXhp2Qdxxx6QrE5G4KUwkditWwJNPwm9/C2vXwlVXwT/+Ac2aJV2ZiOSK+kwkaytX\nhk708nKYMgXefz/0g1x8MRx3HGylAegiBU8d8GkUJrn36adhFFZ1eMyfDwcfHIbyHnEEHHggNG6c\ndJUiUhcKkzQKk/itWhXmfUyZEgJk3jw46KBN4dGzJzRpknSVIpINhUkahUngDuvWhT6LNWu++TOT\nYx9/HFogFRXQq1cIjrKycL9p06T/hCISJ4VJmlIPk40bYdYseO45mDQJFizYFBqpt6qqcKmpadPQ\n8d2s2ab76T9r+13LlmH+x0EHqfNcpNQpTNKUYpgsXBiCY9IkeP75MLnv6KPhqKOgS5fwD3/6rXFj\ndXyLSOYUJmlKIUxWrgz9E5MmhRbIqlUhOI46Cvr2hd13T7pCESk1CpM0xRYmGzaEDu3XXw+3adNg\n7lw49NBNAfKd76iVISK5pTBJU+hh4h5mgVdftpoyJcwIP+CAcOvVKwyzVQe3iOSTwiRNIYbJ6tVh\nTarqAKmq2tTn0bcvtGmTdIUi0tApTNIUWphMmwbnnAMdOkC/fiFA9t5be3SISGHRqsEFavVquP56\nGDcO7roLTj016YpERHJH3bo5MG0a7LcfLF4c5oQoSESk1KllEiO1RkSkoVLLJCZqjYhIQ6aWSZbU\nGhERUcskK2qNiIgEapnUw5dfwg03qDUiIlJNLZM6euop2GcfWLZMrRERkWpqmWRo6VK4/HKYORNG\njQoz2EVEJFDLZAvWroU77oAePcLM9VmzFCQiIunUMqnFypXw5z+HIOneHV58Ebp2TboqEZHCpJZJ\nmgUL4Oc/h29/OywF/8wz4aYgERGpncIk8tprcMYZYRn4pk3h7bdhzJjQKhERkc1r8Je55syBiy+G\n998PLZJRo6BFi6SrEhEpLg16CfrVq0NL5Lzz4NJLw77pIiINkfYzSZNJmKxbF4Jk2LAwe338eO0v\nIiINm/YzqaMJE0IrZPVqaNsWXnpJQSIikq2iChMzOw74PWHgwF/cfXimr12+PPSNzJ4Njz4KvXvn\nrEwRkQanaEZzmdlWwF3AscA+wA/MbO9MXjthQhiV1alTmMGuIMlMeXl50iWUFJ3PeOl8FpaiCROg\nFzDf3Re6exXwENB/cy9YvhxOPz0syvjoozB8ODRrlpdaS4L+ssZL5zNeOp+FpZjCpB3wYcrjxdGx\nb1i1Kqzm2707dOwIb7yh1oiISC4VVZ9Jpjp0gGOPhccfh169kq5GRKT0Fc3QYDPrDQxz9+Oix4MB\nT++EN7Pi+AOJiBSYBjHPxMy2BuYBfYFlwAzgB+4+N9HCRESkeC5zufsGM7sEmMimocEKEhGRAlA0\nLRMRESlcxTSaa7PM7Dgze8fM3jWzQUnXU4zMbIGZvWVmM81sRnSslZlNNLN5ZvasmbVMus5CZWZ/\nMbNKM3s75Vit58/MhpjZfDOba2bHJFN1YarlXA41s8Vm9kZ0Oy7ldzqXm2Fm7c1sspnNMbNZZnZZ\ndDy272dJhEk2ExrlazYCZe7+XXevHgc3GJjk7l2AycCQxKorfKMJ38FUNZ4/M+sGDAC6AscDI820\nsE+Kms4lwG/dff/o9gyAmXVF53JL1gNXuvs+wMHAxdG/kbF9P0siTKjHhEapkfHN70R/YEx0fwxw\nUl4rKiLu/jKwMu1wbeevH/CQu6939wXAfML3WKj1XEL4jqbrj87lZrn7R+7+ZnT/c2Au0J4Yv5+l\nEiYZT2iUzXLgOTN71czOi461dvdKCF9IYJfEqitOu9Ry/tK/s0vQdzYTl5jZm2Z2T8olGZ3LOjCz\nPYD9gFeo/e93nc9pqYSJxKOPu+8PfJ/QDD6MEDCpNGIjOzp/9TcS6OTu+wEfASMSrqfomNl2wCPA\n5VELJba/36USJkuADimP20fHpA7cfVn082PgUUKzttLMWgOY2a7A8uQqLEq1nb8lwG4pz9N3dgvc\n/eOUzYruZtNlF53LDJhZI0KQ3O/uj0WHY/t+lkqYvAp0NrPdzawJcAbweMI1FRUz2zb6vxbMrDlw\nDDCLcB7Pjp52FvBYjW8g1YyvX9ev7fw9DpxhZk3MrCPQmTARVzb52rmM/rGrdgowO7qvc5mZe4EK\nd7895Vhs38+imbS4OZrQGIvWwD+i5WgaAePcfaKZvQaMN7OBwELCCA+pgZk9AJQBO5nZImAocAsw\nIf38uXuFmY0HKoAq4KKM95tuAGo5l0eY2X6EUYcLgAtA5zITZtYH+CEwy8xmEi5nXQsMp4a/3/U5\np5q0KCIiWSuVy1wiIpIghYmIiGRNYSIiIllTmIiISNYUJiIikjWFiYiIZE1hIhIDM9toZr9JefwL\nM7shyZpE8klhIhKPtcApZrZj0oWIJEFhIhKP9cAo4Mr0X5jZiWb2ipm9Hm1EtHN0fKiZjTWzadHm\nROelv1aHYyjjAAABB0lEQVSkWChMROLhwB+AH5rZ9mm/e8nde7v7AcDDwDUpv/sOYdmQQ4Ab0taf\nEikaJbE2l0ghcPfPzWwMcDmwOuVXu0XrHLUBGgMfpPzuMXdfB3xiZpMJK+FqkVIpOmqZiMTrduBc\noHnKsTuBO9y9O3Ah0Czld6mL4xna70SKlMJEJB4G4O4rgfGEQKnWAlga3T8r7XX9o2W+dwIOJ2yn\nIFJ0FCYi8UhtUYwAdko59v+AR8zsVeDjtNe9DZQD04Abo61TRYqOlqAXSYiZDQX+6+6/TboWkWyp\nZSIiIllTy0RERLKmlomIiGRNYSIiIllTmIiISNYUJiIikjWFiYiIZE1hIiIiWfv/1zS3c4SV61UA\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "markdown", "metadata": { "id": "q39Ty9RXseCy", "colab_type": "text" }, "source": [ "A már korábban megismert `savetxt()` függvény segítségével tölthetjük a feldolgozott `array` formátumú változókat file-ba:" ] }, { "cell_type": "code", "metadata": { "id": "ZZ7iFBeCseCz", "colab_type": "code", "colab": {} }, "source": [ "savetxt('data/mentes_ebola_Guinea.dat',GuinLab)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "4M-aU1OoseC0", "colab_type": "text" }, "source": [ "A `savetxt()` a `loadtxt()` hez hasonlóan számos kulcsszavas paraméterrel bír. Ezek közül az alábbi példában bemutatjuk a `header=` és a `comments=` paraméterek használatát.\n", "Az alábbi példa azt is illusztrálja, hogy ha ugyanolyan hosszúságú adatokat akarunk egymás melletti oszlopokba írni akkor azokat zárójelben egymás után felsorolva tehetjük meg:" ] }, { "cell_type": "code", "metadata": { "id": "h_S_Gy90seC1", "colab_type": "code", "colab": {} }, "source": [ "savetxt('data/mentes_ebola_Guinea_vs_time.dat',\n", " (Nap,GuinLab),\n", " header=' Guineai halalozasi adatok',\n", " comments='@')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "bDwefcWBseC2", "colab_type": "text" }, "source": [ "Vizsgáljuk meg az elkészített [filet](data/mentes_ebola_Guinea_vs_time.dat)!" ] } ] }