Numpy er biblioteker til python. Numpy er primært til matematiske funktioner som sin(x), log(x) så bruges numpy til lineær algebra, random og matrixer.
Da man i fysik, kemi, matematik ofte arbejder med tal er det smart at bruge nympy arrays istedet for python lister. Arrays kan man behandle som tal. Hvis du har et array: a = np.array([1,2,3,4,5]) kan du gange alle tal i dette array ved at skrive b = 5*a
Numpy er "numerisk python", en pakke der kan gennemføre numeriske matematiske beregninger og funktioner som sinus, cosius og eksponentialfunktionen
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi,2*np.pi,100)
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi,np.pi*3/2,np.pi*2])
plt.grid()
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))
b=[1,2,3,4,5]
bb=np.array(b)
Alle kommandoer her til højre kan bruges på forskellige måder.
1) Tildele funktionens værdi til en variabel
b = [1,2,3,4,5]
barr = np.array(b)
sumb = barr.sum()
print('sum b = ',sumb)
2) kalde funktionen direkte i fx print eller plot
b = [1,2,3,4,5]
barr = np.array(b)
print('sum b = ',barr.sum())
Generelt gælder det at du skal bruge numpy når du kan og droppe listerne. Det er meget nemmere at fylde arrays end lister.
import matplotlib.pyplot as plt
import numpy as np
xvalues = np.arange(100) # x = 0 til 99
yvalues = np.random.random(100) #random tal mellem 0 og 1
plt.scatter(xvalues, yvalues)
plt.show()
i stedet for det noget længere approache med lister
import matplotlib.pyplot as plt
import numpy as np
xvalues = []
yvalues = []
for i in range(100):
nrand = np.random.random()
xvalues.append(i)
yvalues.append(nrand)
plt.scatter(xvalues,yvalues)
Her er en fantastisk film som forklarer de vigtigste funktioner i numpy. Se hans kode her.
Et Cheat-Sheet med flere funktioner er her.
En liste over de vigtigste funktioner er her
np.array([1,2,3,4,5]) en dimensional array
np.array ([(1,2,3,4,5),(2,3,4,5,6)]) to dim array
np.zeroes(5) genererer en array med nuller
np.ones(4) genererer en array med 4 1 taller
np.full(4,np.pi) genererer en array med 4 pi'er
x = np.linspace(-np.pi,2*np.pi,100) genererer en array med 100 felter fra -pi til 2*pi.
np.random.rand(100) genererer en array med 100 tilfældige tal mellem 0 og 1.
np.random.randint(10,size=20) genererer 20 tilfældige heltal mellem 0 og 10
len(x) beregner længden af x-arrayen
x.size gør det samme som len(x) men kan også gøre det for fleredimensionale arrays.
x.sort() sorterer arrayen i stigende rækkefølge
np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(2, 10, dtype=float)
array([ 2., 3., 4., 5., 6., 7., 8., 9.])
np.arange(2, 3, 0.1)
array([ 2. , 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9])
np.linspace(0, 1, 5) ➝ [0. , 0.25, 0.5 , 0.75, 1. ]
Arange er lidt anderledes end linspace. Her angiver du størrelsen på din step som 3. parameter.
np.arange(0, 1.1, 0.25) ➝ [0. , 0.25, 0.5 , 0.75, 1.]np.append(y,talværdi) tilføjer et element i slutningen af array y.
x.reshape(-1) lave en vandret array om til en lodret og omvendt
np.insert(x,4,talværdi) sætter "talværdi" ind foran det 5. plads.
np.concatenate((x,y),axis=0) tilføjer y i slutningen af x
np.concatenate((x,y),axis=1) tilføjer y som en ny række til x
y[4] returnerer den 5. værdi af array y
y[4] = 16 erstatter det 5.tal i array y med 16
np.add(y,16) adderer 16 til alle elementer i arrayen
np.subtract(y,16) subtraherer 16
de andre er
np.multiply(y,16) np.divide(y,16) np.power(y,2)
np.add(x,y) lægger alle elementer fra x og y sammen.
de andre er
np.subtract(x,y), np.multiply(x,y) np.divide(x,y) np.power(x,y) np.sqrt(x)
np.log(x) tager den naturlige logaritme (ln)
np.abs(x) tager den absolutte værdi
np.round(x,3) runder alle værdier i x til 3 decimaler.
np.mean(x,axis=0) gennemsnit af række (axis=1 for kolonne)
x.sum() lægger alle tallene i arrayen sammen
x.min() angiver den mindste værdi
x.max() angiver den størrste værdi
np.std(y) angiver standard deviation af y