This shows you the differences between two versions of the page.
|
ps:labs_python:01 [2023/10/04 01:03] ionut.gorgos |
ps:labs_python:01 [2024/09/29 21:07] (current) darius.necula |
||
|---|---|---|---|
| Line 5: | Line 5: | ||
| Laboratoarele se pot face utilizând **Google Colab** (care ne oferă un notebook Python în browser în care putem rula cod fără a ne mai preocupa de setup), sau **Pycharm** (care este un IDE dedicat pentru Python). | Laboratoarele se pot face utilizând **Google Colab** (care ne oferă un notebook Python în browser în care putem rula cod fără a ne mai preocupa de setup), sau **Pycharm** (care este un IDE dedicat pentru Python). | ||
| - | <note important>Vom folosi ultima versiune de **[[https://www.python.org/downloads/ | Python 3.11]]**</note> | + | <note important>Vom folosi versiunea **[[https://www.python.org/downloads/ | Python 3.11]]**</note> |
| [[https://colab.research.google.com | Google Colab]] | [[https://colab.research.google.com | Google Colab]] | ||
| Line 45: | Line 45: | ||
| Spre exemplu, <nowiki>X = [[1, 2], [4, 5], [3, 6]]</nowiki> va reprezenta o matrice de 3 pe 2 (3 linii și 2 coloane). Prima linie poate fi selectată ca X[0], iar primul element de pe prima linie poate fi selectat ca X[0][0]. | Spre exemplu, <nowiki>X = [[1, 2], [4, 5], [3, 6]]</nowiki> va reprezenta o matrice de 3 pe 2 (3 linii și 2 coloane). Prima linie poate fi selectată ca X[0], iar primul element de pe prima linie poate fi selectat ca X[0][0]. | ||
| - | În continuare ne vom folosi de **numpy.matrix** pentru a crea și manipula matrice. | + | În continuare ne vom folosi de **numpy.array** pentru a crea și a manipula matrice(2D array) sau putem folosi o clasă deprecated, **numpy.matrix**. |
| </note> | </note> | ||
| * Creați o matrice de 5x4 de numere aleatoare (e.g. folosind '//np.random//' ca mai înainte). Apoi creați o matrice cu elemente de unu de aceeași dimensiune. Acum adunați cele două matrici și afișați rezultatul. | * Creați o matrice de 5x4 de numere aleatoare (e.g. folosind '//np.random//' ca mai înainte). Apoi creați o matrice cu elemente de unu de aceeași dimensiune. Acum adunați cele două matrici și afișați rezultatul. | ||
| Line 60: | Line 60: | ||
| 4. Transpusa | 4. Transpusa | ||
| - | Transpusa unei matrice poate fi obținută prin aplicarea funcției transpose pe o matrice: '//numpy.matrix.transpose//'. | + | Transpusa unei matrice poate fi obținută prin aplicarea funcției transpose pe o matrice: '//numpy.transpose//'. |
| * Transpuneți matricea pe care ați creat-o mai devreme. | * Transpuneți matricea pe care ați creat-o mai devreme. | ||
| Line 101: | Line 101: | ||
| import matplotlib.pyplot as plt | import matplotlib.pyplot as plt | ||
| </note> | </note> | ||
| + | <note important>Dacă primiți eroare la afișare pe Windows, instalați [[https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022|Microsoft Visual C++ Redistributable]]</note> | ||
| * Folosiți funcția '//sin//' pentru a genera o sinusoidă de frecvență 1 Hz peste 1 secundă (astfel încât ar trebui să obțineți o perioadă completă). Pentru asta trebuie să generați intervalul de timp peste [0 ... 1] în pași foarte mici (e.g. 100 de puncte) și apoi să apelați funcția sin(2*pi*f*t) peste această secvență (unde f este frecvența, t este intervalul de timp, iar pi este numărul 3.1415...) pentru a obține sinusoida ca o secvență. Observație: Folosiți //numpy.pi// pentru variabila //pi// ! | * Folosiți funcția '//sin//' pentru a genera o sinusoidă de frecvență 1 Hz peste 1 secundă (astfel încât ar trebui să obțineți o perioadă completă). Pentru asta trebuie să generați intervalul de timp peste [0 ... 1] în pași foarte mici (e.g. 100 de puncte) și apoi să apelați funcția sin(2*pi*f*t) peste această secvență (unde f este frecvența, t este intervalul de timp, iar pi este numărul 3.1415...) pentru a obține sinusoida ca o secvență. Observație: Folosiți //numpy.pi// pentru variabila //pi// ! | ||
| Line 142: | Line 143: | ||
| În numpy se foloseste convenția de row-major, deci este indicat să se parcurgă întâi dimensiunea cea mai din dreapta (în cazul matricelor, dimensiunea liniilor). De asemenea, mereu când este posibil, este indicat să se folosească operații vectoriale. | În numpy se foloseste convenția de row-major, deci este indicat să se parcurgă întâi dimensiunea cea mai din dreapta (în cazul matricelor, dimensiunea liniilor). De asemenea, mereu când este posibil, este indicat să se folosească operații vectoriale. | ||
| + | <note important> | ||
| + | În mod default operatorul '*' va face înmulțire element cu element. | ||
| + | Pentru înmulțire de matrici trebuie să folosim funcția 'numpy.dot' sau operatorul '@'. | ||
| + | </note> | ||
| <code python> | <code python> | ||