Namig: vse naloge so elegantno rešljive v eni vrstici.

Tabela iz seznama

Napišite funkcijo seznam_tabela(vrednosti, visina, sirina), ki sprejme seznam števil vrednosti in vrne numpy tabelo z visina vrsticami in sirina stolpci, ki ima po vrsti (od zgoraj navzdol, znotraj vrstice pa od leve proti desni) vnešene vrednosti iz podanega seznama.

>>> seznam_tabela([1,2,3,2,1,0], 2, 3)
array([[1, 2, 3],
       [2, 1, 0]])
Rešitev ```python def seznam_tabela(vrednosti, visina, sirina): return np.array(vrednosti).reshape((visina, sirina)) ```

Velika števila

Napišite funkcijo velika_stevila(n, x), ki vrne numpy tabelo dolžine n, ki ima vse vrednosti enake x. Vrnjena tabela naj bo primernega tipa, da bo podpirala operacije s 64-bitnimi celimi števili.

>>> sum(velika_stevila(3, 1000000000) + velika_stevila(3, 2000000000))
9000000000
Rešitev ```python def velika_stevila(n, x): return np.full(n, x, dtype=np.int64) ```

Povprečnost

Napišite funkcijo odmik_od_povprecja(a), ki sprejme numpy tabelo a poljubnih dimenzij in vrne tabelo enakih dimenzij, ki na vsakem mestu vsebuje odmik pripadajoče vrednosti od povprečja vseh vrednosti v tabeli.

>>> a = np.array([[1,2,3],[4,5,6]])
>>> odmik_od_povprecja(a)
array([[-2.5, -1.5, -0.5],
       [ 0.5,  1.5,  2.5]])
Rešitev ```python def odmik_od_povprecja(a): return a - np.mean(a) ```

Stroški

Napišite funkcijo stroski(a), ki sprejme 2D numpy tabelo a. Vsaka vrstica tabele opisuje posamezen projekt, vsak stolpec pa ustreza nekemu tipu stroškov (npr. plače, materialni stroški, ...). Funkcija naj vrne indeks stolpca oz. tipa stroškov, ki je preko vseh projektov skupaj največ prispeval k stroškom podjetja. Z drugimi besedami, poišče stolpec z največjo vsoto.

>>> a = np.array([1, 2, 4, 0],
                 [3, 1, 1, 2],
                 [0, 1, 2, 1])
>>> stroski(a)
2
Rešitev ```python def stroski(a): return a.sum(axis=0).argmax() ```

Temperature

Napišite funkcijo enake_meritve(casi, temp1, temp2). Kot prvi argument casi sprejme navaden seznam časov meritev. Drugi in tretji argument pa sta numpy tabeli izmerjenih temperatur v dveh različnih krajih. Vsi argumenti so enake dolžine. Funkcija naj vrne numpy tabelo časov, ob katerih je bila izmerjena enaka temperatura v obeh krajih.

>>> casi = [9, 10, 12, 15, 16, 17, 18]
>>> kraj1 = np.array([20, 22, 23, 20, 19, 21, 25])
>>> kraj2 = np.array([20, 18, 23, 20, 22, 20, 25])
>>> enake_meritve(casi, kraj1, kraj2)
array([ 9, 12, 15, 18])
Rešitev ```python def enake_meritve(casi, temp1, temp2): return np.array(casi)[temp1 == temp2] ```

Brez negativnih

Napišite funkcijo brez_negativnih(a), ki sprejme 2D numpy tabelo a in vrne novo tabelo brez vrstic in stolpcev, ki vsebujejo kakšno negativno vrednost. V spodnjem primeru odstrani prvo in tretjo vrstico ter prvi, tretji in peti stolpec; ne ostane prav dosti.

>>> a = np.array([[1, 0, -3, 3, -4],
                  [1, 2, 5, 1, 8],
                  [-2, 3, 1, 4, 5],
                  [6, 2, 1, 7, 0]])
>>> brez_negativnih(a)
array([[2, 1],
       [2, 7]])
Rešitev ```python def brez_negativnih(a): return a[a.min(axis=1) >= 0, :][:, a.min(axis=0) >= 0] ```

Večkotnik

Napišite funkcijo veckotnik(a), ki izračuna in vrne obseg večkotnika. Sprejme 2D numpy tabelo a, ki podaja koordinate vozlišč večkotnika, kot si sledijo po vrsti (povezana sta tudi prvo in zadnje vozlišče).

>>> a = np.array([[-2,1], [0,-1], [1,0], [1,2], [-1,2]])
>>> veckotnik(a)
9.65685425
Rešitev ```python def veckotnik(a): return np.sum(np.sqrt(np.sum((a - np.roll(a,-1,axis=0))**2, axis=1))) ```
Zadnja sprememba: ponedeljek, 25. oktober 2021, 09.25