\n",
" \n",
"\n",
"\n",
"Ebben a Notebookban bemutatjuk az tömböket illetve hogyan kell a pythonban adatfájlokat beolvasni."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%pylab inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Adattömbök, matematikai eszközök, adatfájlok kezelése\n",
"\n",
"A pythonban a **`numpy`** csomag felel az adatok beolvasásáért, matematikai operációk elvégezésért (mint a gyökvonás, szinusz ...)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Tömbök\n",
"\n",
"A programozásban létrehozhatunk mátrixokat, melyeket adattömböknek hívunk. Ezek bármennyi dimenziósak lehetnek."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = array([1, 2, 3]) # hozzunk létre egy 1 dimenziós tömböt\n",
"print(type(a)) # Írassuk ki \"a\" típusát: \"\"\n",
"print(a.shape) # Nézzük meg a formáját: \"(3,)\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**A python és a legtöbb programozási nyelv nullától kezdi a tömbök indexelését. Azaz az első elem indexe 0, a másodiké 1 és így tovább. Egy 10 elemű tömbnek az utolsó eleme 9-es indexet visel (Elemszám-1)!**\n",
"\n",
"Így kell elképzelni az adattömböket:\n",
"\n",
"\n",
"
\n",
""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"print(a[0], a[1], a[2]) # Írassuk ki a tömb, első (0.-ik), második, ás harmadik elemét\n",
"a[0] = 5 # Átírjuk az első (nulladik) elem értékét\n",
"print(a) # Nézzük meg a megváltozott \"a\" vektort"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"b = array([[1,2,3],[4,5,6]]) # Készítsünk 2 dimenziós tömböt\n",
"print(b.shape) # Kiíratjuk az alakját\n",
"print(b[0, 0], b[0, 1], b[1, 0]) # Írjunk ki pár elemet a tömbből"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### \"Almátrixok\"\n",
"\n",
"A pythonban ki tudunk egy tömbből venni résztömböket. De vigyázzunk, mert a résztömbön végzett művelet a szülőtömb adott elemein is elvégződik."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
" # Készítsük els következő 2 dimenziós (3 sor, 4 oszlop) tömbböt\n",
" # [[ 1 2 3 4]\n",
" # [ 5 6 7 8]\n",
" # [ 9 10 11 12]]\n",
"a = array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])\n",
"print(a[0, 1]) # Írassuk ki a 0. sor, 1. oszlopának elem(eit): 2\n",
"\n",
" # Hozzuk létre a mátrix következő almátrixát (ami 2*2 nagyságú)\n",
" # [[2 3]\n",
" # [6 7]]\n",
" # Azaz az a mátrixból a 0-tól 2-ig levő adatokatsorok, illetve függőlegesen 1-tól 3-ig levő adatoszlopok\n",
" # Vegyük észre, hogy a felső határ már nincs benne az adatsorban!\n",
"b = a[0:2, 1:3]\n",
"\n",
" # Változtassuk meg a b mátrix [0,0]-ás elemének értékét\n",
"b[0, 0] = 77\n",
"\n",
" # Ellenőrizzük az a mátrixban a \"b[0,0]\" helyen levő értéket (a[0,1]-as hely)\n",
"print(a[0, 1]) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Számsorok generálása és tömbbe rendezése\n",
"\n",
"Lehetőség van adott hosszú sorokat gyártani, melyekből tömb készíthető. Nézzük néhány példát erre:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = arange(15) # Készítsünk egy 15 elemű listát \n",
"print(a)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = arange(15) # Készítsünk egy 15 elemű listát \n",
"a = a.reshape(3, 5) # Rendezzük a listát 3*5-s tömbbe\n",
"a # Nézzük meg az eredményt"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a.size # Megadja mekkora a tömb mérete (mennyi adat van benne)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a.ndim"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"type(a)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a.dtype.name # Megnézi milyen tipusú adatok vannak a tömbben"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [],
"source": [
"b = array([6.25, -0.25, 8.])\n",
"b"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"type(b)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"b.dtype.name"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"c = array( [ [1,2], [3,4] ], dtype=complex )\n",
"c"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"c.dtype.name"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"zeros( (3,4) ) #Készítsünk egy 3*4-es tömböt, mely tele van nullával"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ones( (2,3,4), dtype=int16 ) # Készítsünk egy 3 dimenziós tömböt, csupa egyesből"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a = arange(15, 100, 5) # Készítsünk egy listát 15-től, 100-ig, 5-sével \n",
"print(a)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"arange( 30, 10, -5 )"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"arange( 10, 30, -5 ) #Ez üres lista, de NINCS hibaüzenet!!!"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"arange( 0, 2, 0.3 )"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"linspace( 0, 2, 9 ) # Készítsünk egy 9 elemű listát 0 és 2 között. Egyenlő lépésközzel."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Matematikai függvények\n",
"\n",
"Bővebb leírás itt található: https://docs.scipy.org/doc/numpy/reference/routines.math.html"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x = linspace( 0, 2*pi, 100 ) # A pi-nek a neve \"pi\"\n",
"x"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"f = sin(x) # vegyük az előbb generált adatsornak a szinuszát\n",
"plot(f) # majd ábárzoljuk"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"plot(cos(x))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"plot(tan(x))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"plot(tanh(x))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"plot(arctan(x))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"B = arange(3)\n",
"B"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"exp(B) # Emeljük \"e\"-adra a B elemeit"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"sqrt(B) # Gyökvonás neve 'sqrt'"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"C = array([2., -1., 4.])\n",
"add(B, C) # Össze is adahatunk elemenként 2 tömbböt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Kétváltozós függvények ábrázolása (felületi ábrák)\n",
"\n",
"Ha kétváltozós függvényt szeretnénk ábrázolni, akkor ahhoz a mintavételezést a numpy csomag meshgrid() függvényével tehetjük meg az alábbi szintaxis szerint:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"xrange=linspace(-3,3,100) # határok és pontok száma az x irányba\n",
"yrange=linspace(-3,3,100) # határok és pontok száma az y irányba\n",
"x,y=meshgrid(xrange,yrange) # mintavételezés az x és y síkban"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Két változós függvényt a pcolor() matplotlib függvény segítségével tudunk ábrázolni. \n",
"\n",
"A fent definiált x és y tömbök segítségével például az\n",
"$\n",
"f(x,y)=e^{-(x^2+y^2)}\n",
"$\n",
"kétdimenziós Gauss-görbét az alábbi módon ábrázolhatjuk:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"pcolor(x,y,exp(-(x**2+y**2)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Hogy egy adott szín mit jelent, azt a colorbar() függvény segítségével tudhatjuk meg."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"pcolor(x,y,exp(-(x**2+y**2)))\n",
"colorbar()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Kétváltozós függvényeket szokás kontúrok segítségével is ábrázolni. Egy kontúrvonal azokat a pontokat tartalmazza, ahol az adott két változós függvény ugyanazt az értéket veszi fel. A contour() függvény segítségével tudunk kontúrábrákat generálni:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"contour(x,y,exp(-(x**2+y**2)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ha csak megadott kontúrértékekre vagyunk kíváncsiak, akkor azt a levels kulcsszó használatával tehetjük meg."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"contour(x,y,exp(-(x**2+y**2)), levels=linspace(0,1,20))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Ábra mentése\n",
"A legenerált ábrákat a savefig() paranccsal tudjuk kimenteni képfile-okba."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [],
"source": [
"plot(x,y)\n",
"savefig('az_en_abram.png')"
]
}
],
"metadata": {
"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.5.1"
},
"latex_envs": {
"bibliofile": "biblio.bib",
"cite_by": "apalike",
"current_citInitial": 1,
"eqLabelWithNumbers": true,
"eqNumInitial": 0
},
"nav_menu": {},
"toc": {
"navigate_menu": true,
"number_sections": false,
"sideBar": true,
"threshold": 6,
"toc_cell": false,
"toc_section_display": "block",
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 0
}