Ebben a Notebookban bemutatjuk az tömböket illetve hogyan kell a pythonban adatfájlokat beolvasni.
%pylab inline
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 ...)
A programozásban létrehozhatunk mátrixokat, melyeket adattömböknek hívunk. Ezek bármennyi dimenziósak lehetnek.
a = array([1, 2, 3]) # hozzunk létre egy 1 dimenziós tömböt
print(type(a)) # Írassuk ki "a" típusát: "<type 'numpy.ndarray'>"
print(a.shape) # Nézzük meg a formáját: "(3,)"
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)!
Így kell elképzelni az adattömböket:
print(a[0], a[1], a[2]) # Írassuk ki a tömb, első (0.-ik), második, ás harmadik elemét
a[0] = 5 # Átírjuk az első (nulladik) elem értékét
print(a) # Nézzük meg a megváltozott "a" vektort
b = array([[1,2,3],[4,5,6]]) # Készítsünk 2 dimenziós tömböt
print(b.shape) # Kiíratjuk az alakját
print(b[0, 0], b[0, 1], b[1, 0]) # Írjunk ki pár elemet a tömbből
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.
# Készítsük els következő 2 dimenziós (3 sor, 4 oszlop) tömböt
# [[ 1 2 3 4]
# [ 5 6 7 8]
# [ 9 10 11 12]]
a = array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
print(a[0, 1]) # Írassuk ki a 0. sor, 1. oszlopának elem(eit): 2
# Hozzuk létre a mátrix következő almátrixát (ami 2*2 nagyságú)
# [[2 3]
# [6 7]]
# Azaz a mátrixból a 0-tól 2-ig levő adatsorok, illetve függőlegesen 1-tól 3-ig levő adatoszlopok kivétele
# Vegyük észre, hogy a felső határ már nincs benne az adatsorban!
b = a[0:2, 1:3]
# Változtassuk meg a b mátrix [0,0]-ás elemének értékét
b[0, 0] = 77
# Ellenőrizzük az a mátrixban a "b[0,0]" helyen levő értéket (a[0,1]-as hely)
print(a[0, 1])
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:
a = arange(15) # Készítsünk egy 15 elemű listát
print(a)
a = arange(15) # Készítsünk egy 15 elemű listát
a = a.reshape(3, 5) # Rendezzük a listát 3*5-s tömbbe
a # Nézzük meg az eredményt
a.shape
a.size # Megadja mekkora a tömb mérete (mennyi adat van benne)
a.ndim
type(a)
a.dtype.name # Megnézi milyen tipusú adatok vannak a tömbben
b = array([6.25, -0.25, 8.])
b
type(b)
b.dtype.name
c = array( [ [1,2], [3,4] ], dtype=complex )
c
c.dtype.name
zeros( (3,4) ) #Készítsünk egy 3*4-es tömböt, mely tele van nullával
ones( (2,3,4), dtype=int16 ) # Készítsünk egy 3 dimenziós tömböt, csupa egyesből
a = arange(15, 100, 5) # Készítsünk egy listát 15-től, 100-ig, 5-sével
print(a)
arange( 30, 10, -5 )
arange( 10, 30, -5 ) #Ez üres lista, de NINCS hibaüzenet!!!
arange( 0, 2, 0.3 )
linspace( 0, 2, 9 ) # Készítsünk egy 9 elemű listát 0 és 2 között. Egyenlő lépésközzel.
Bővebb leírás itt található: https://docs.scipy.org/doc/numpy/reference/routines.math.html
x = linspace( 0, 2*pi, 100 ) # A pi-nek a neve "pi"
x
f = sin(x) # vegyük az előbb generált adatsornak a szinuszát
plot(f) # majd ábárzoljuk
plot(cos(x))
plot(tan(x))
plot(tanh(x))
plot(arctan(x))
B = arange(3)
B
exp(B) # Emeljük "e"-adra a B elemeit
sqrt(B) # Gyökvonás neve 'sqrt'
C = array([2., -1., 4.])
add(B, C) # Össze is adhatunk elemenként 2 tömböt
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:
xrange=linspace(-3,3,100) # határok és pontok száma az x irányba
yrange=linspace(-3,3,100) # határok és pontok száma az y irányba
x,y=meshgrid(xrange,yrange) # mintavételezés az x és y síkban
Két változós függvényt a pcolormesh() matplotlib függvény segítségével tudunk ábrázolni.
A fent definiált x és y tömbök segítségével például az $ f(x,y)=e^{-(x^2+y^2)} $ kétdimenziós Gauss-görbét az alábbi módon ábrázolhatjuk:
pcolormesh(x,y,exp(-(x**2+y**2)))
Hogy egy adott szín mit jelent, azt a colorbar() függvény segítségével tudhatjuk meg.
pcolormesh(x,y,exp(-(x**2+y**2)))
colorbar()
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:
contour(x,y,exp(-(x**2+y**2)))
Ha csak megadott kontúrértékekre vagyunk kíváncsiak, akkor azt a levels kulcsszó használatával tehetjük meg.
contour(x,y,exp(-(x**2+y**2)), levels=linspace(0,1,20))
A legenerált ábrákat a savefig() paranccsal tudjuk kimenteni képfile-okba.
plot(x,y)
savefig('az_en_abram.pdf')