CHEM-A2600 - Kemiantekniikan ohjelmointikurssi, Luento-opetus, 1.11.2021-10.12.2021
This course space end date is set to 10.12.2021 Search Courses: CHEM-A2600
Python-oppimateriaali (CHEM-A2600)
Krav för slutförande
NumPy-taulukoiden siivuttaminen
Luodaan ensin uusi yksiulotteinen taulukko (vektori):
import numpy as np v = np.arange(100, 1100, 100) # v on array([ 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]) # indeksi: 0 1 2 3 4 5 6 7 8 9
NumPy-taulukoiden siivuttaminen toimii samaan tapaan kuin listojen siivuttaminen. Merkinnässä [start:stop:askel], stop-alkio ei kuulu enää siivuun. askel-osuus ei ole pakollinen.
Siivutetaan yllä luotu vektori v:
siivu1 = v[0:4] # siivu1 on array([100, 200, 300, 400]) siivu2 = v[5:7] # siivu2 on array([600, 700]) siivu3 = v[0:7:2] # siivu3 on array([100, 300, 500, 700])
NumPy-tarjoaa myös erittain käytannöllisen : -indeksoinnin Matlabin tapaan. : -indeksi tarkoittaa kyseisen ulottuvuuden kaikkia indeksejä:
# Määritellään 3 x 4 matriisi M M = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) # Matriisin M kaikkien rivien kolmas sarake A = M[:, 2] # array([ 3, 7, 11]) # Matriisin M toisen rivin kaikki sarakkeet B1 = M[1, :] # array([5, 6, 7, 8]) # Rivin siivuttamisen voi tehdä myös merkinnällä, jossa sarakkeet jätetään pois B2 = M[1] # array([5, 6, 7, 8])
:-indeksointia voi käyttää myös näin:
# Poimitaan matriisin M kaikkien rivien joka toinen sarake A2 = M[:, 0::2]
jolloin taulukko A2 saa arvon:
array([[ 1, 3], [ 5, 7], [ 9, 11]])
Merkintä M[:, 0::2] tarkoittaa siis, että poimitaan
- kaikilta riveiltä (kaksoispiste ennen pilkkua)
- ensimmäisestä sarakkeesta lähtien (0)
- viimeiseen sarakkeeseen asti (stop-arvo puuttuu)
- kahden sarakkeen askelvälillä (2).
Tehtävä 4.3.1