Matricea Python și Introducere în NumPy

În acest articol, vom afla despre matricile Python folosind liste imbricate și pachetul NumPy.

O matrice este o structură de date bidimensională în care numerele sunt aranjate în rânduri și coloane. De exemplu:

Această matrice este o matrice 3x4 (pronunțată „trei câte patru”), deoarece are 3 rânduri și 4 coloane.

Matricea Python

Python nu are un tip încorporat pentru matrice. Cu toate acestea, putem trata lista unei liste ca o matrice. De exemplu:

 A = ((1, 4, 5), (-5, 8, 9)) 

Putem trata această listă a unei liste ca o matrice care are 2 rânduri și 3 coloane.

Asigurați-vă că aflați despre listele Python înainte de a continua acest articol.

Să vedem cum să lucrați cu o listă imbricată.

 A = ((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19)) print("A =", A) print("A(1) =", A(1)) # 2nd row print("A(1)(2) =", A(1)(2)) # 3rd element of 2nd row print("A(0)(-1) =", A(0)(-1)) # Last element of 1st Row column = (); # empty list for row in A: column.append(row(2)) print("3rd column =", column) 

Când rulăm programul, ieșirea va fi:

 A = ((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19)) A (1) = (-5, 8, 9, 0) A (1) (2) = 9 A (0) (- 1) = 12 a treia coloană = (5, 9, 11) 

Iată câteva alte exemple legate de matricile Python folosind liste imbricate.

  • Adăugați două matrice
  • Transpune o Matrice
  • Înmulțiți două matrice

Utilizarea listelor imbricate ca matrice funcționează pentru sarcini de calcul simple, cu toate acestea, există un mod mai bun de a lucra cu matrici în Python folosind pachetul NumPy.

NumPy Array

NumPy este un pachet pentru calcul științific care are suport pentru un obiect matricial puternic N-dimensional. Înainte de a putea utiliza NumPy, trebuie să îl instalați. Pentru mai multe informatii,

  • Vizitați: Cum se instalează NumPy?
  • Dacă sunteți pe Windows, descărcați și instalați distribuția anaconda a Python. Acesta vine cu NumPy și alte câteva pachete legate de știința datelor și învățarea automată.

Odată ce NumPy este instalat, îl puteți importa și utiliza.

NumPy oferă o serie multidimensională de numere (care este de fapt un obiect). Să luăm un exemplu:

 import numpy as np a = np.array((1, 2, 3)) print(a) # Output: (1, 2, 3) print(type(a)) # Output: 

După cum puteți vedea, se numește clasa de matrice NumPy ndarray.

Cum se creează o matrice NumPy?

Există mai multe moduri de a crea tablouri NumPy.

1. Matrice de numere întregi, flotante și numere complexe

 import numpy as np A = np.array(((1, 2, 3), (3, 4, 5))) print(A) A = np.array(((1.1, 2, 3), (3, 4, 5))) # Array of floats print(A) A = np.array(((1, 2, 3), (3, 4, 5)), dtype = complex) # Array of complex numbers print(A) 

Când rulați programul, ieșirea va fi:

 ((1 2 3) (3 4 5)) ((1.1 2. 3.) (3. 4. 5.)) ((1. + 0.j 2. + 0.j 3. + 0.j) (3. + 0.j 4. + 0.j 5. + 0.j)) 

2. Matrice de zerouri și unii

 import numpy as np zeors_array = np.zeros( (2, 3) ) print(zeors_array) ''' Output: ((0. 0. 0.) (0. 0. 0.)) ''' ones_array = np.ones( (1, 5), dtype=np.int32 ) // specifying dtype print(ones_array) # Output: ((1 1 1 1 1)) 

Aici, am specificat dtypela 32 de biți (4 octeți). Prin urmare, această matrice poate lua valori de la .-2-312-31-1

3. Utilizarea arange () și shape ()

 import numpy as np A = np.arange(4) print('A =', A) B = np.arange(12).reshape(2, 6) print('B =', B) ''' Output: A = (0 1 2 3) B = (( 0 1 2 3 4 5) ( 6 7 8 9 10 11)) ''' 

Aflați mai multe despre alte moduri de a crea o matrice NumPy.

Operațiuni Matrix

Mai sus, v-am dat 3 exemple: adunarea a două matrice, multiplicarea a două matrice și transpunerea unei matrice. Am folosit liste imbricate înainte pentru a scrie acele programe. Să vedem cum putem face aceeași sarcină folosind matricea NumPy.

Adăugarea a două matrice

Folosim +operatorul pentru a adăuga elemente corespunzătoare a două matrice NumPy.

 import numpy as np A = np.array(((2, 4), (5, -6))) B = np.array(((9, -3), (3, 6))) C = A + B # element wise addition print(C) ''' Output: ((11 1) ( 8 0)) '''

Înmulțirea a două matrice

Pentru a înmulți două matrice, folosim dot()metoda. Aflați mai multe despre modul în care funcționează numpy.dot.

Notă: * se folosește pentru înmulțirea matricei (înmulțirea elementelor corespunzătoare a două matrice), nu înmulțirea matricei.

 import numpy as np A = np.array(((3, 6, 7), (5, -3, 0))) B = np.array(((1, 1), (2, 1), (3, -3))) C = A.dot(B) print(C) ''' Output: (( 36 -12) ( -1 2)) ''' 

Transpunerea unei matrice

Folosim numpy.transpose pentru a calcula transpunerea unei matrice.

 import numpy as np A = np.array(((1, 1), (2, 1), (3, -3))) print(A.transpose()) ''' Output: (( 1 2 3) ( 1 1 -3)) ''' 

După cum puteți vedea, NumPy ne-a ușurat mult sarcina.

Accesați elemente matrice, rânduri și coloane

Access matrix elements

Similar like lists, we can access matrix elements using index. Let's start with a one-dimensional NumPy array.

 import numpy as np A = np.array((2, 4, 6, 8, 10)) print("A(0) =", A(0)) # First element print("A(2) =", A(2)) # Third element print("A(-1) =", A(-1)) # Last element 

When you run the program, the output will be:

 A(0) = 2 A(2) = 6 A(-1) = 10 

Now, let's see how we can access elements of a two-dimensional array (which is basically a matrix).

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) # First element of first row print("A(0)(0) =", A(0)(0)) # Third element of second row print("A(1)(2) =", A(1)(2)) # Last element of last row print("A(-1)(-1) =", A(-1)(-1)) 

When we run the program, the output will be:

 A(0)(0) = 1 A(1)(2) = 9 A(-1)(-1) = 19 

Access rows of a Matrix

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) print("A(0) =", A(0)) # First Row print("A(2) =", A(2)) # Third Row print("A(-1) =", A(-1)) # Last Row (3rd row in this case)

When we run the program, the output will be:

 A(0) = (1, 4, 5, 12) A(2) = (-6, 7, 11, 19) A(-1) = (-6, 7, 11, 19) 

Access columns of a Matrix

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) print("A(:,0) =",A(:,0)) # First Column print("A(:,3) =", A(:,3)) # Fourth Column print("A(:,-1) =", A(:,-1)) # Last Column (4th column in this case) 

When we run the program, the output will be:

 A(:,0) = ( 1 -5 -6) A(:,3) = (12 0 19) A(:,-1) = (12 0 19) 

If you don't know how this above code works, read slicing of a matrix section of this article.

Slicing of a Matrix

Slicing of a one-dimensional NumPy array is similar to a list. If you don't know how slicing for a list works, visit Understanding Python's slice notation.

Să luăm un exemplu:

 import numpy as np letters = np.array((1, 3, 5, 7, 9, 7, 5)) # 3rd to 5th elements print(letters(2:5)) # Output: (5, 7, 9) # 1st to 4th elements print(letters(:-5)) # Output: (1, 3) # 6th to last elements print(letters(5:)) # Output:(7, 5) # 1st to last elements print(letters(:)) # Output:(1, 3, 5, 7, 9, 7, 5) # reversing a list print(letters(::-1)) # Output:(5, 7, 9, 7, 5, 3, 1) 

Acum, să vedem cum putem tăia o matrice.

 import numpy as np A = np.array(((1, 4, 5, 12, 14), (-5, 8, 9, 0, 17), (-6, 7, 11, 19, 21))) print(A(:2, :4)) # two rows, four columns ''' Output: (( 1 4 5 12) (-5 8 9 0)) ''' print(A(:1,)) # first row, all columns ''' Output: (( 1 4 5 12 14)) ''' print(A(:,2)) # all rows, second column ''' Output: ( 5 9 11) ''' print(A(:, 2:5)) # all rows, third to the fifth column '''Output: (( 5 12 14) ( 9 0 17) (11 19 21)) ''' 

După cum puteți vedea, utilizarea NumPy (în loc de liste imbricate) face mult mai ușor să lucrați cu matrice și nici măcar nu am zgâriat elementele de bază. Vă sugerăm să explorați pachetul NumPy în detaliu, mai ales dacă încercați să utilizați Python pentru știința datelor / analize.

NumPy Resources pe care l-ați putea găsi de ajutor:

  • Tutorial NumPy
  • NumPy Reference

Articole interesante...