import numpy as np
= np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
a 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
= np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
a 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.
= np.arange(0, 49).reshape(7, 7)
tabela print(tabela)
= tabela[0:4,2:7:2] # prve štiri vrstice, vsak drugi stolpec od tretjega do sedmega
razrezano 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:
= np.arange(100, 112).reshape(4,3)
minitabela print(minitabela)
0:4,2:7:2] = minitabela # na izbrana mesta shranimo vrednosti iz minitabela
tabela[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
= np.array([[1, 2, 3], [4, 5, 6]])
a 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)