Notificări
Șterge tot
sept. 30, 2021 5:52 pm
Matricea în NumPy
Obiectul principal NumPy este o matrice multidimensională omogenă. Cel mai adesea este o secvență unidimensională sau un tabel bidimensional umplut cu elemente de același tip, de obicei numere, care sunt indexate de un tuplu de numere întregi pozitive. În NumPy, elementele acestui tuplu se numesc axe, iar numărul de axe se numește rang.
Pentru a ajunge la exemple, să importăm mai întâi pachetul:
import numpy as np
Importul numpy sub alias np a devenit deja o convenție general acceptată, nerostită, s-ar putea spune, o tradiție.
Există destul de multe modalități de a crea matrice NumPy, dar vom începe cu cea trivială - crearea unui tablou dintr-o listă Python completată manual:
a = np.array([11, 22, 33, 44, 55, 66, 77, 88, 99])
Acum avem o matrice unidimensională, adică are o singură axă de-a lungul căreia elementele sale sunt indexate.
Puteți obține acces la numărul 33 în modul obișnuit:
a[2]
În general, s-ar putea crede că nu există nimic interesant în aceste matrice, dar, de fapt, acesta este doar începutul. Câteva exemple interesante:
a[[7, 0, 3, 3, 3, 0, 7]] a[a > 50] 2*a + 10 np.sin(a)**2 + np.cos(a)**2
Vectorizat - înseamnă că toate operațiile aritmetice și funcțiile matematice sunt efectuate imediat pe toate elementele matricelor. Acest lucru, la rândul său, înseamnă că nu este nevoie să efectuați calcule în buclă. În cazul unui tablou unidimensional, ați putea crede că nu este un astfel de bonus, deoarece există generatoare. Dar să trecem la matrice bidimensionale:
a = np.arange(12) a = a.reshape(3, 4)
Acum am creat o matrice folosind funcția np.arange (), care este foarte asemănătoare cu funcția range () a lui Python. Apoi, am remodelat matricea folosind metoda reshape (), adică de fapt, am putea crea această matrice cu o singură comandă:
a = np.arange(12).reshape(3, 4) print(a) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])
Din nou, ați putea crede că nimic nou - totul este ca în Python. Un alt lucru interesant este că NumPy adaugă trucuri foarte convenabile la sintaxa Python convenabilă și familiară, de exemplu, traducând matrici:
b = [2, 3, 4, 5] a*b array([[ 0, 3, 8, 15], [ 8, 15, 24, 35], [16, 27, 40, 55]])
În acest exemplu, fără bucle (și generatoare), am înmulțit fiecare coloană din matricea a cu elementul corespunzător din matricea b. Acestea. am tradus matricea b peste matricea a.
Putem face același lucru cu fiecare rând al matricei a:
c = [[10], [20], [30]] a + c array([[10, 11, 12, 13], [24, 25, 26, 27], [38, 39, 40, 41]])
În acest caz, am adăugat pur și simplu matricea de coloane c la matricea a. Și au primit ceea ce doreau.
Un alt exemplu, avem o matrice bidimensională și vrem să îi cunoaștem elementele minime prin rânduri și coloane. În primul rând, să creăm o serie de numere aleatorii și să lăsăm, pentru comoditatea noastră, aceste numere să fie numere întregi:
a = np.random.randint(0, 15, size = (4, 6)) a array([[ 9, 12, 5, 3, 1, 7], [ 2, 12, 10, 11, 14, 9], [ 4, 4, 9, 11, 5, 2], [12, 8, 6, 8, 9, 3]])
Elementul minim din această matrice este:
a.min() 1
Iată care sunt elementele minime după coloană și rând:
a.min(axis = 0) # min după coloana array([2, 4, 5, 3, 1, 2]) a.min(axis = 1) # min după linie array([1, 2, 2, 3])