NumPy

NumPy er ein pakke for vitenskapelig databehandling for Python, som mellom anna inneheld arrays, som eg skal ta for meg her. Det fins også eit bibliotek som heiter array, men denne lenka seier at det er betre med numpy arrays.

Numpy-arrays

Kva er egentlig eit "array"?

Hvis du søkjer på ordet array i programmering, eller les lærebøker i programmering, kan du treffa på definisjonar som er akkurat slik vi har definert lister. Men når eg snakkar om arrays her, er det numpy-arrays det handlar om, så derfor sløyfer eg "numpy-". Forskjellen på lister og arrays er kva du kan gjera med dei, og at ein del operasjonar, som "+",  har ulik betydning. Sjå nedanfor. Den vanlige måten å importera numpy er å skriva

import numpy as np

Når vi bruker metodar frå numpy må vi då bruka "fornavnet" np før alle funksjonsnavna. Sjå eksempel nedanfor.

Initialisering

Nyttige funksjonar / kommandoar for å initialisera (gi startverdiar) til eit array:

np.zeros() initialiserer eit array med nullar. Eksempel: np.zeros(3) gir arrayet  [0., 0., 0.]

np.ones.() initialiserer eit array med einarar. Eksempel: np.ones(3) gir arrayet  [1., 1., 1.]

np.repeat() initialiserer eit array med eit visst antal av same tal. Eksempel: np. repeat(3,5) gir arrayet [3, 3, 3, 3, 3]

np.linspace() gir eit array med tall frå og med ein gitt verdi til og med ein gitt verdi spredd jevnt med eit gitt antal verdiar. Eksempel: np.linspace(-3.0,3.0,num = 6) gir arrayet [-3.  -1.8 -0.6  0.6  1.8  3.]

np.arange() gir eit array frå og med ein gitt verdi til (men ikkje med) ein gitt verdi, og med gitt mellomrom. Eksempel: np.arange(-2.0,2.0, 0.5) gir arrayet [-2.  -1.5 -1.  -0.5  0.   0.5  1.   1.5]

np.random.random(5) gir eit array med fem tilfeldige tal. Les også Random og Random, fru Blom.

Operasjonar med arrays

eksempel Hvis vi feks definerer ei liste a = [1, 2, 3], og skriv b = 2*a, så vil den nye lista b vera lik [1, 2, 3, 1, 2, 3]. Men hvis vi lagar ei numpy-array (ved feks. å skriva c = np.array(a)). Hvis vi no skriv d = 2*a, så vil det nye arrayet b vera lik [2, 4, 6]. Dette er nyttig hvis vi vil plotta ein funksjon, og vi alt har eit x-array. Då får vi ei y-liste simpelthen ved å y = f(x). Dette kan vi ikkje gjera med lister.

Arrays som vektorar

Her skal vi bare sjå på matematikken. Å tegna ein vektor med Matplotlib er litt omstendelig.

Eksempel

Vektoraddisjon og subtraksjon

Måten summen av to arrays fungerer på, er akkurat det same som ved vektoraddisjon og subtraksjon. Det betyr at når a og b er arrays, kan vi enkelt utføra vektoraddisjon og vektorsubtraksjon ved å skriva:

a + b
a -  b

Men vi kan også gjera det same med np.add(a,b) og np.subtract(a-b). Og då treng faktisk ikkje a og b vera arrays. Det funkar også med lister.

Skalarprodukt og vektorprodukt.

x = [1, 2, 3]
y = [4, 5, 6]

numpy.dot gir oss skalarproduktet av x og y:

np.dot(x,y)
32

numpy.cross() gir oss vektorproduktet av to vektorar
np.cross(x, y)
array([-3,  6, -3])

np.linalg.norm() gir oss (mellom anna) lengden av ein vektor:

np.linalg.norm([3,4])
Out[80]: 5.0

Plotting med arrays

Sjå: Graftegning med Matplotlib.

Lesa frå, og skriva data til ei tekstfil

Det fins mange måtar å lesa frå og skriva til filer. Numpyfunksjonen loadtxt() lar oss importera data frå tekstfiler. Ei tekstfil er ei fil som du kan lesa i feks notisblokk, og som er grei å bruka når vi har små datamengder. Anta vi har ei tekstfil som heiter datafil.tx med ei kolonne for tid og ei for posisjon, og ei overskrift slik:

# tid  posisjon
0.1  0.3
0.2  0.4
0.3  0.6
0.4  0.8
0.5  0.85

Då kan vi lesa denne fila med følgande kode:

# Dataimport:
t, s = np.loadtxt('datafil.txt', skiprows=1, unpack=True)

Her bli t og s numpy-arrays som du kan bruka til å plotta data.

Vi kan også lagra data frå eit array til ei tekstfil med numpy.savetxt().

LENKER

Python Numpy Tutorial.

Python Numpy Array Tutorial på datacamp.