Python Matrix och introduktion till NumPy

I den här artikeln lär vi oss om Python-matriser med kapslade listor och NumPy-paketet.

En matris är en tvådimensionell datastruktur där siffror ordnas i rader och kolumner. Till exempel:

Denna matris är en 3x4-matris (uttalas "tre med fyra") eftersom den har 3 rader och 4 kolumner.

Python Matrix

Python har ingen inbyggd typ för matriser. Vi kan dock behandla listan över en lista som en matris. Till exempel:

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

Vi kan behandla listan över en lista som en matris med två rader och 3 kolumner.

Var noga med att lära dig mer om Python-listor innan du fortsätter den här artikeln.

Låt oss se hur man arbetar med en kapslad lista.

 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) 

När vi kör programmet blir resultatet:

 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 3: e kolumn = (5, 9, 11) 

Här är några fler exempel relaterade till Python-matriser med kapslade listor.

  • Lägg till två matriser
  • Transponera en matris
  • Multiplicera två matriser

Att använda kapslade listor som en matris fungerar för enkla beräkningsuppgifter, men det finns ett bättre sätt att arbeta med matriser i Python med NumPy-paketet.

NumPy Array

NumPy är ett paket för vetenskaplig databehandling som har stöd för ett kraftfullt N-dimensionellt arrayobjekt. Innan du kan använda NumPy måste du installera det. För mer information,

  • Besök: Hur installerar jag NumPy?
  • Om du använder Windows, ladda ner och installera anacondadistribution av Python. Den levereras med NumPy och andra flera paket relaterade till datavetenskap och maskininlärning.

När NumPy har installerats kan du importera och använda den.

NumPy tillhandahåller flerdimensionellt antal grupper (som faktiskt är ett objekt). Låt oss ta ett exempel:

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

Som du kan se kallas NumPys array-klass ndarray.

Hur skapar jag en NumPy-array?

Det finns flera sätt att skapa NumPy-matriser.

1. Array av heltal, flottörer och komplexa siffror

 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) 

När du kör programmet blir resultatet:

 ((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. Uppställning av nollor och enor

 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)) 

Här har vi specificerat dtypetill 32 bitar (4 byte). Därför kan denna matris ta värden från till .-2-312-31-1

3. Använda arange () och form ()

 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)) ''' 

Lär dig mer om andra sätt att skapa en NumPy-array.

Matrixoperationer

Ovan gav vi dig tre exempel: tillsats av två matriser, multiplicering av två matriser och transponering av en matris. Vi använde kapslade listor tidigare för att skriva dessa program. Låt oss se hur vi kan göra samma uppgift med hjälp av NumPy-matrisen.

Tillägg av två matriser

Vi använder +operatören för att lägga till motsvarande element i två NumPy-matriser.

 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)) '''

Multiplikation av två matriser

För att multiplicera två matriser använder vi dot()metoden. Läs mer om hur numpy.dot fungerar.

Obs: * används för arraymultiplikation (multiplicering av motsvarande element i två matriser) inte matrismultiplikation.

 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)) ''' 

Transponera en matris

Vi använder numpy.transpose för att beräkna transponera en matris.

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

Som du ser gjorde NumPy vår uppgift mycket enklare.

Få åtkomst till matriselement, rader och kolumner

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.

Låt oss ta ett exempel:

 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) 

Låt oss nu se hur vi kan skära en matris.

 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)) ''' 

Som du kan se gör det mycket enklare att arbeta med matriser med NumPy (istället för kapslade listor) och vi har inte ens skrapat grunderna. Vi föreslår att du utforskar NumPy-paketet i detalj, särskilt om du försöker använda Python för datavetenskap / analys.

NumPy-resurser som du kanske tycker är användbara:

  • NumPy-handledning
  • NumPy-referens

Intressanta artiklar...