Python-oppimateriaali (CHEM-A2600)
NumPyn matemaattiset funktiot
Aloitetaan luomalla yksiulotteinen taulukko v:
import numpy as np v = np.arange(1, 11) # v on array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Summaus ja tulo
NumPyn matemaattisille funktioille annetaan parametrina taulukko, jolloin funktio suorittaa halutun matemaattisen operaation kaikille taulukon alkioille.
Taulukoiden alkioiden summaus ja tulo onnistuu numpy.sum ja numpy.prod-funktioilla:
summa = np.sum(v) # Tulos on 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55 tulo = np.prod(v) # Tulos on 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 = 3628800
Laskutoimituksia voi tehdä myös taulukosta leikatuille siivuille:
# Määritellään 3 x 4 matriisi M
M = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
ekan_rivin_summa = np.sum(M[0]) # 1 + 2 + 3 + 4 = 10
vikan_sarakkeen_summa = np.sum(M[:, -1]) # 4 + 8 + 12 = 24
Matemaattiset funktiot
Lista NumPyn matemaattisista funktioista: https://docs.scipy.org/doc/numpy/reference/routines.math.html
Esimerkkejä vektorille v:
log_kympit = np.log10(v) # array([ 0. , 0.30103 , 0.47712125, 0.60205999, 0.69897 , # 0.77815125, 0.84509804, 0.90308999, 0.95424251, 1. ]) asteet = np.linspace(0, 360, 9) # array([ 0., 45., 90., 135., 180., 225., 270., 315., 360.]) radiaanit = np.radians(asteet) sinit = np.sin(radiaanit)
Tilastolliset funktiot
Lista NumPyn tilastollisista funktioista: https://docs.scipy.org/doc/numpy/reference/routines.statistics.html
Esimerkkejä vektorille v:
keskiarvo = np.mean(v) # 5.5 suurin = np.amax(v) # 10 pienin = np.amin(v) # 1
Taulukoiden yhtäsuuruuden vertailu alkioittain
Kahden taulukon yhtäsuuruutta voi verrata numpy.allclose-funktiolla, joka vertaa taulukoita alkioittain:
T1 = np.linspace(1.0, 5.0, 5) # array([ 1., 2., 3., 4., 5.]) T2 = np.linspace(1.00001, 5.0, 5) # array([ 1.00001 , 2.0000075, 3.000005 , 4.0000025, 5. ]) if np.allclose(T1, T2, rtol = 0.01): print("Samat") # Taulukoiden T1 ja T2 alkiot ovat yhtäsuuret 1% tarkkuudella (rtol = 0.01), joten tulostuu "Samat"
Lineaarialgebra
Lista NumPyn lineaarialgebran funktioista: https://docs.scipy.org/doc/numpy/reference/routines.linalg.html
Matriisitulon voi laskea numpy.dot-funktiolla
# Määritellään kaksi 2x2 neliömatriisia A ja B A = np.array([[2, 1], [1, 2]]) B = np.array([[2, 2], [3, 3]]) # Matriisitulo C = AB C = np.dot(A, B) #array([[7, 7], # [8, 8]]) # Muistathan, että vaihdantalaki ei päde matriisien kertolaskussa! # Matriisitulo D = BA D = np.dot(B, A) # array([[6, 6], # [9, 9]])
Eli np.dot(A, B) != np.dot(B, A)