Slajdy do wykładu – ONA2-Macierze
Jako interpretera pythona mogą Państwo dalej używać naszego serwera Jupyter. Proszę o nie nadużywanie tych interpreterów – szczególnie jeśli chodzi o zajmowanie pamięci. Trochę porad jak używać jupytera znajdą Państwo tu .
Ćwiczenia:
- Stwórz macierze A i B o wymiarach 1000×1000 zawierające wartości A[i,j]==i*3-j*5 i B[i,j]==np.sqrt(A[i,j]) (Zauważ, że to wymaga wartości urojonych, a więc macierzy typu complex64 i wartość sqrt(-1) ->.j)
- Napisz funkcję poz(indeksy, shape), która dla zadanej krotki indeksów zwraca liniową pozycję elementu o zadanych indeksach w wielowymiarowaj macierzy o kształcie shape. Np. poz([1,1,1],(2,2,2)) daje 7, zaś poz([0,1,0],(2,2,2)) daje 2. Jeśli ktoś przyśle mi w ciągu tygodnia taki program liczący poz() dla dowolnej liczby wymiarów, i nie tworzącej dodatkowych macierzy, e-mailem, z dopiskiem [ONA] w temacie, to otrzyma dodatkowy punkt do zaliczenia.
- Napisz program, który zmienia znak elementów w macierzy B, których suma indeksów jest nieparzysta, na ujemny. Warto wykorzystać mnożenie macierzy i ew. broadcasting.
- korzystając z metody sort() , posortuj macierz 3-wymiarową wg. drugiej współrzędnej i obejrzyj wynik ze zrozumieniem tego co się wydarzyło.
- (*)Korzystając z funkcji frompyfunc() napisz funkcje wektorowe, które liczą a) sumę kwadratów dwóch macierzy (dwie macierze do jednej)
b) iloraz i resztę z dzielenia całkowitoliczbowego przez 17 (jedna macierz wejściowa i dwie macierze wyjściowe) - Korzystając z modułu time, porównaj prędkość funkcji liczących N potęg dwójki – na liście i w wektorze. Dla jakich wartości N warto używać macierzy?