Python Matrix og introduktion til NumPy

I denne artikel lærer vi om Python-matricer ved hjælp af indlejrede lister og NumPy-pakken.

En matrix er en todimensional datastruktur, hvor tal er arrangeret i rækker og kolonner. For eksempel:

Denne matrix er en 3x4 (udtalt "tre efter fire") matrix, fordi den har 3 rækker og 4 kolonner.

Python Matrix

Python har ikke en indbygget type til matricer. Vi kan dog behandle listen over en liste som en matrix. For eksempel:

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

Vi kan behandle denne liste over en liste som en matrix med 2 rækker og 3 kolonner.

Sørg for at lære om Python-lister, før du fortsætter denne artikel.

Lad os se, hvordan man arbejder med en indlejret liste.

 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ører programmet, vil output være:

 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. kolonne = (5, 9, 11) 

Her er nogle få flere eksempler relateret til Python-matricer ved hjælp af indlejrede lister.

  • Tilføj to matricer
  • Transponer en matrix
  • Multiplicer to matricer

Brug af indlejrede lister som en matrix fungerer til enkle beregningsopgaver, men der er en bedre måde at arbejde med matricer i Python ved hjælp af NumPy-pakken.

NumPy Array

NumPy er en pakke til videnskabelig computing, der understøtter et kraftigt N-dimensionelt array-objekt. Inden du kan bruge NumPy, skal du installere det. For mere info,

  • Besøg: Hvordan installeres NumPy?
  • Hvis du bruger Windows, skal du downloade og installere anacondadistribution af Python. Den leveres med NumPy og andre flere pakker relateret til datavidenskab og maskinindlæring.

Når NumPy er installeret, kan du importere og bruge det.

NumPy giver et flerdimensionelt antal numre (som faktisk er et objekt). Lad os tage et eksempel:

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

Som du kan se, kaldes NumPys array-klasse ndarray.

Hvordan oprettes et NumPy-array?

Der er flere måder at oprette NumPy-arrays på.

1. Array af heltal, flyder og komplekse tal

 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ører programmet, vil output være:

 ((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. Matrix med nuller og ener

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

Her har vi specificeret dtypetil 32 bits (4 bytes). Derfor kan denne matrix tage værdier fra til .-2-312-31-1

3. Brug af arange () og 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 mere om andre måder at oprette et NumPy-array på.

Matrixoperationer

Ovenfor gav vi dig 3 eksempler: tilføjelse af to matricer, multiplikation af to matricer og transponering af en matrix. Vi brugte indlejrede lister før til at skrive disse programmer. Lad os se, hvordan vi kan udføre den samme opgave ved hjælp af NumPy-arrayet.

Tilføjelse af to matricer

Vi bruger +operator til at tilføje tilsvarende elementer i to NumPy-matricer.

 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 af to matricer

For at multiplicere to matricer bruger vi dot()metoden. Lær mere om, hvordan numpy.dot fungerer.

Bemærk: * bruges til matrixmultiplikation (multiplikation af tilsvarende elementer i to arrays) ikke matrixmultiplikation.

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

Transponere en matrix

Vi bruger numpy.transpose til beregning af transponering af en matrix.

 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 kan se, gjorde NumPy vores opgave meget lettere.

Adgang til matrixelementer, rækker og kolonner

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.

Lad os tage et eksempel:

 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) 

Lad os nu se, hvordan vi kan skære en matrix.

 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 meget lettere at arbejde med matricer ved hjælp af NumPy (i stedet for indlejrede lister), og vi har ikke engang skrabet det grundlæggende. Vi foreslår, at du udforsker NumPy-pakken i detaljer, især hvis du prøver at bruge Python til datavidenskab / analyse.

NumPy-ressourcer, som du måske finder nyttige:

  • NumPy-vejledning
  • NumPy Reference

Interessante artikler...