Przykładowe zadania i rozwiązania, poradniki w języku Python 3.7.3!
Nie jesteś zalogowany na forum.
Strony: 1
# Zadanie 1 Za pomocą funkcji arange stwórz tablicę Numpy składającą się 20 kolejnych wielokrotności liczby 2.
def zad1():
return np.arange(2,20*2+1,2)
print(zad1())
# Zadanie 2Stwórz listę składającą się z wartości zmiennoprzecinkowych a następnie zapisz do innej zmiennej jej kopięprzekonwertowaną na typ int64.
def zad2():
tab_float = np.arange(1,10, 0.2)
tab_int = tab_float.astype('int64')
print(tab_float)
print(tab_int)
print(zad2())
# Zadanie 3
Napisz funkcję, która będzie:
- przyjmowała jeden parametr ‘n’ w postaci liczby całkowitej
- zwracała tablicę Numpy o wymiarach n*n kolejnych liczb całkowitych poczynając od 1
def zad3(n):
return np.arange(1,n*n+1).reshape((n,n))
print(zad3(5))
# Zadanie 4 Napisz funkcję, która będzie przyjmowała 2 parametry: liczbę, która będzie podstawą operacji potęgowania oraz ilość kolejnych potęg do wygenerowania. Korzystając z funkcji logspace generuj tablicę jednowymiarową kolejnych potęg podanej liczby,
np. generuj(2,4) -> [2 4 8 16]
def zad4(n, base):
return np.logspace(1, n, num=n, base=base)
print(zad4(4, 2))
# Zadanie 5
Napisz funkcję, która:
- na wejściu przyjmuje jeden parametr określający długość wektora,
- na podstawie parametru generuje wektor, ale w kolejności odwróconej (czyli np. dla n=3 =>[3 2 1])
- generuje macierz diagonalną z w/w wektorem jako przekątną
def zad5(n):
return np.diag(range(n, 0, -1))
print(zad5(4))
# Zadanie 6 Stwórz skrypt który na wyjściu wyświetli macierz numpy (tablica wielowymiarowa) w postaci wykreślanki, gdzie
jedno słowo będzie wypisane w kolumnie, jedno w wierszu i jedno po ukosie. Jedno z tych słów powinno być wypisane od prawej do lewej.
def zad6():
# wyrazy jako wektory znakĂłw (liter)
malina = np.array(list('malina'))
lizak = np.array(list('lizak'))
jagoda = np.array(list('jagoda'))
# przygotowanie "pustej" tablicy 6x6 wypeĹnionej pustym stringiem
wykreslanka = np.zeros((6, 6), dtype=str)
# lub
wykreslanka = np.empty((6, 6), dtype='str')
# lub tak
# wykreslanka = np.full((6,6),"",dtype='str')
# moĹźna teĹź bardziej "na piechotÄ"
# teraz np. za pomocÄ
wycinkĂłw (slice) moĹźemy nie tylko zwracaÄ
# okreĹlone fragmenty macierzy, ale wstawiaÄ tam wartoĹci
# naleĹźy pamiÄtaÄ, Ĺźe rozmiar wycinka musi byÄ taki sam jak
# rozmiar danych, ktĂłre chcemy tam umieĹciÄ
wykreslanka[:, 0] = malina
wykreslanka[2,:5] = lizak
wykreslanka[5,::-1] = jagoda
# za pomocÄ
np.put moĹźemy rĂłwnieĹź wstawiaÄ dane do macierzy okreĹlajÄ
c zbiĂłr indeksĂłw
# na ktĂłrych odpowiadajÄ
ce wartoĹci stawianego wektora majÄ
siÄ znaleĹşÄ
# ale tutaj numeracja indeksĂłw jest "globalna" gdzie indeks 0 to wiersz 0 i kolumna 0
# a kolejne numery sÄ
naliczane do prawej strony np.
# 0 1 2 3
# 4 5 6 7
# 8 9 10 11 itd.
# np.put(wykreslanka, [ 0, 6, 12, 18, 24, 30 ], wyraz1)
# np.put(wykreslanka, range(12, 17), wyraz2)
print(wykreslanka)
print(zad6())
# Zadanie 7
Napisz funkcję, która wygeneruje macierz wielowymiarową postaci:
[[2 4 6]
[4 2 4]
[6 4 2]]
Przy założeniach:
- funkcja przyjmuje parametr n, który określa wymiary macierzy jako n*n i umieszcza wielokrotność liczby 2 na
kolejnych jej przekątnych rozchodzących się od głównej przekątnej.
def zad7(n):
mat = np.diag([2 for _ in range(n)])
for indeks in range(1, n):
vec = [2+(2*indeks) for _ in range(n-indeks)]
mat += np.diag(vec, indeks)
mat += np.diag(vec, -indeks)
print(mat)
print(zad7(5))
# Zadanie 8 Napisz funkcję, która:
- jako parametr wejściowy będzie przyjmowała tablicę wielowymiarową numpy oraz parametr ‘kierunek’,
- parametr kierunek określa czy tablica wejściowa będzie dzielona w pionie czy poziomie
- funkcja dzieli tablicę wejściową na pół (napisz warunek, który wyświetli komunikat, że ilość wierszy lub
kolumn, w zależności od kierunku podziału, nie pozwala na operację)
def zad8(tab, kierunek='poziomo'):
if kierunek == 'poziomo':
# nieparzysta liczba wierszy
if tab.shape[0] % 2 != 0:
print("Tablica posiada nieprzystÄ
liczbÄ wierszy")
return
p1 = tab[0:int(tab.shape[0]/2), :]
p2 = tab[int(tab.shape[0]/2):, :]
print("***** czÄĹÄ 1 *****")
print(p1)
print("***** czÄĹÄ 2 *****")
print(p2)
elif kierunek == "pionowo":
if tab.shape[1] % 2 != 0:
print("Tablica posiada nieprzystÄ
liczbÄ wierszy")
return
p1 = tab[:, 0:int(tab.shape[1]/2)]
p2 = tab[:, int(tab.shape[0] / 2):]
print("***** czÄĹÄ 1 *****")
print(p1)
print("***** czÄĹÄ 2 *****")
print(p2)
print(zad8(np.arange(36).reshape((6,6))))
print(zad8(np.arange(36).reshape((6,6)), kierunek='pionowo'))
# Zadanie 9 Wykorzystaj poznane na zajęciach funkcje biblioteki Numpy i stwórz macierz 5x5, która będzie zawierała
kolejne wartości ciągu Fibonacciego.
def zad9(n):
# funkcja wewnÄtrzna
def fibo(n):
if n == 0:
return []
elif n == 1:
return [1]
elif n == 2:
return [1, 1]
else:
fibos = [1, 1]
for indeks in range(n-2):
fibos.append(fibos[-1] + fibos[-2])
return fibos
# print(fibo(n))
# teraz Numpy array
import math as m
shape = int(m.sqrt(n))
return np.array(fibo(n)).reshape((shape, shape))
print(zad9(25))
Offline
Strony: 1