Documente Academic
Documente Profesional
Documente Cultură
NumPy
Pachete & Python
Panda ofer structuri de date pentru date sub form de tabele care provin
din seturi de date reale.
In[]: from numpy import array #import doar o funcie dintr-un pachet
# folosesc doar asa:
x=array([1,2,3])
Elementele arrays sunt toate de acelasi tip de date ( scriem cod mai
simplu i mai eficient) stocate ntr-un boc continnuu de memorie
Dimensiunile unui numpy array se numesc axe, iar numrul de axe rank
In[]: %pylab
In[]: poz=rand(10000000, 2)
In[]: type(poz)
numpy.ndarray
In[]: poz.dtype
dtype('float64')
In[]: poz.itemsize
8 # float64
Cum crem un array
Listele sunt foarte generale, pot conine orice fel de obiecte, sunt scrise
n mod dinamic. Listele nu ofer suport pentru funcii matematice.
Putem defini explicit tipul unui array cnd l crem folosind atributul
dtype ca argument:
Tipurile de date ce pot fi folosite : int, float, complex, bool, string, object
In[]: dd=genfromtxt('stkdate.dat')
In[]: dd.shape
(643, 7) # 643 de linii si 7 coloane
Cum crem un array din fiiere
In[]: d=loadtxt('stkdate.dat')
In[]: d
array([[ 1.80000000e+03, 1.00000000e+00, 1.00000000e+00,
-6.10000000e+00, -6.10000000e+00, -6.10000000e+00,
1.00000000e+00],
[ 1.80000000e+03, 1.00000000e+00, 2.00000000e+00,
-1.54000000e+01, -1.54000000e+01, -1.54000000e+01,
1.00000000e+00],
[ 1.80000000e+03, 1.00000000e+00, 1.00000000e+01,
-9.50000000e+00, -9.50000000e+00, -9.50000000e+00,
1.00000000e+00]])
Indexarea ncepe de la 0.
In[]: a = arange(10)**3
In[]: a
array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729])
In[]: a[0], a[2], a[-1] # primul, al treilea si ultimul element
(0, 8, 729)
In[]: a[2:5] # a[start: stop: step] echivalent cu a[start, stop) default step 1
array([ 8, 27, 64])
In[]: a[:6:2] = -1000 # echivalent cu a[0:6:2] = -1000
In[]: a
array([-1000, 1, -1000, 27, -1000, 125, 216, 343, 512, 729])
In[]: a[ : :-1] # n ordine invers a
array([ 729, 512, 343, 216, 125, -1000, 27, -1000, 1, -1000])
Manipularea arrays
Multidimensional arrays 2D, 3D... pot avea un index pe axa. Indexii sunt
tuple de ntregi
Dac indexii sunt mai putini ca nr axelor se ntoarce array de dimensiune N-1
In[]: x=diag(arange(3))
x
array([[0, 0, 0],
[0, 1, 0],
[0, 0, 2]])
In[]: x[1,1] # linia 1, coloana 1
In []: v.take(ind)
Array([-2, 0, 2])
In []: take([-3, -2, -1, 0, 1, 2], ind) # fct take() aplicat pe liste i alte obiecte
Array([-2, 0, 2])
[[12 13 14 15],
[16 17 18 19],
[20 21 22 23]]])
Reshape, resize, stacking array
In[]: data=genfromtxt('stkdate.dat')
In[]: data.shape
(643, 7) # 643 de linii si 7 coloane
In[]: mean(data[:,3]) # calculez temp medie in ultimii ani
In[]: std(data[:,3]), var(data[:,3]) # deviatia standard si varianta
In[]: data[:,3].min() , data[:,3].max() # valoarea min si max
Bibliografie
http://www.numpy.org/