import numpy as np
a = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(a)
print(a.shape)
print(a.ndim)
print(a.size)[[1 2 3 4]
[5 6 7 8]]
(2, 4)
2
8
Gradivi za to poglavje sta:
Povezave in osnovna navodila za namestitev knjižnice numpy na domači računalnik so v Poglavje 1.3 .
Vizualna reprecentacija operacij z Numpy seznami: http://jalammar.github.io/visual-numpy/
Navaden seznam pretvorimo v Numpy seznam s funkcijo np.array(seznam).
import numpy as np
a = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(a)
print(a.shape)
print(a.ndim)
print(a.size)[[1 2 3 4]
[5 6 7 8]]
(2, 4)
2
8
Sezname lahko združimo z np.concatenate(sez1, sez2), ki vrne staknjen seznam. To je počasna operacija, zato je raje ne uporabljajmo.
Če je le mogoče vnaprej ustvarimo nov seznam znane dolžine z eno od spodnjih metod:
np.zeros(oblika) parameter oblika je nabor celih števil, ki predstavlja obliko tabele npr. (3, 2) ustvari tabelo z tremi vrsticami in dvema stolpcemanp.ones(oblika)np.linspace(zacetek, konec, num) vrne enakomerno razporejena števila na intervalunp.arange(zacetek, konec, korak) vrne števila ločena za korak (če ni podan, je 1)np.fromfunction(ime_funkcije, oblika)seznam.reshape(oblika) spremeni obliko seznamaprint(np.zeros((3, 2))) # tri vrstice, dva stolpca[[0. 0.]
[0. 0.]
[0. 0.]]
Do elementov tabel dostopamo podobno kot pri običajnih seznamih (zacetek:konec:korak), le da to naredimo za vsako dimenzijo posebej ločeno z vejicami.
tabela = np.arange(0, 49).reshape(7, 7)
print(tabela)
razrezano = tabela[0:4,2:7:2] # prve štiri vrstice, vsak drugi stolpec od tretjega do sedmega
print(razrezano)[[ 0 1 2 3 4 5 6]
[ 7 8 9 10 11 12 13]
[14 15 16 17 18 19 20]
[21 22 23 24 25 26 27]
[28 29 30 31 32 33 34]
[35 36 37 38 39 40 41]
[42 43 44 45 46 47 48]]
[[ 2 4 6]
[ 9 11 13]
[16 18 20]
[23 25 27]]
Če želimo vse elemente v neki dimenziji napišemo :. Tako lahko dobimo posamezne stolpce.
print(tabela[:,3]) # četrti stolpec[ 3 10 17 24 31 38 45]
Ko imamo enkrat izbrane želene vrstice in stolpce, lahko te vrednosti shranimo v spremenljivko (kot je to zgoraj pri razrezano). Lahko pa pa na ta izbrana mesta v tabeli shranimo neke druge vrednosti. Shranjujemo lahko tudi cele tabele naenkrat:
minitabela = np.arange(100, 112).reshape(4,3)
print(minitabela)
tabela[0:4,2:7:2] = minitabela # na izbrana mesta shranimo vrednosti iz minitabela
print(tabela)[[100 101 102]
[103 104 105]
[106 107 108]
[109 110 111]]
[[ 0 1 100 3 101 5 102]
[ 7 8 103 10 104 12 105]
[ 14 15 106 17 107 19 108]
[ 21 22 109 24 110 26 111]
[ 28 29 30 31 32 33 34]
[ 35 36 37 38 39 40 41]
[ 42 43 44 45 46 47 48]]
Glej predvsem uradno dokumentacijo: https://numpy.org/doc/stable/reference/routines.sort.html
Vsaka funkcija ima opis parametrov in zelo nazorne primere uporabe.
Pri mnogih funkcijah lahko podamo neobvezni parameter axis=x, kjer je x številka osi, po kateri želimo operacijo izvesti (0, 1, 2, …).
Vrednost True se obnaša kot 1 in False se obnaša kot 0 ter obratno.
np.any(tabela) vrne True, če je vsaj en element Truenp.all(tabela) vrne True, če so vsi elementi Truenp.nonzero(tabela) vrne indekse neničelnih elementov v vsaki dimenziji posebej (koordinate teh elementov)np.flatten(tabela) vrne “flat” obliko tabele (enodimenzionalni seznam zaporednih elementov)np.flatnonzero(tabela) vrne indekse neničelnih elementov v “flat” obliki tabele (zaporedni indeks)np.where(pogoj, x, y) vrne elemente iz x, kjer je pogoj izpolnjen, sicer vrne ustrezni element iz y; pogoj se ovrednoti za vsak element posebej; glej primere v dokumentaciji!tabela.T vrne transponiramo tabelo (to pomeni, da so elementi zrcaljeni preko diagonale); deluje tudi za nekvadratne tabeleimport numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
print(a.T)[[1 2 3]
[4 5 6]]
[[1 4]
[2 5]
[3 6]]
Dokumentacija: https://numpy.org/doc/stable/reference/routines.math.html
np.abs(tabela)np.sum(tabela)np.cumsum(tabela)np.prod(tabela)np.log(tabela)np.exp(tabela)np.sin(tabela)