Python Matrix og introduksjon til NumPy

I denne artikkelen vil vi lære om Python-matriser ved hjelp av nestede lister og NumPy-pakken.

En matrise er en todimensjonal datastruktur der tall er ordnet i rader og kolonner. For eksempel:

Denne matrisen er en 3x4-matrise (uttalt "tre med fire") fordi den har 3 rader og 4 kolonner.

Python Matrix

Python har ikke en innebygd type for matriser. Vi kan imidlertid behandle listen over en liste som en matrise. For eksempel:

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

Vi kan behandle denne listen over en liste som en matrise som har to rader og 3 kolonner.

Sørg for å lære om Python-lister før du fortsetter denne artikkelen.

La oss se hvordan vi kan jobbe med en nestet 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 kjører programmet, vil utdataene 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 noen flere eksempler relatert til Python-matriser ved hjelp av nestede lister.

  • Legg til to matriser
  • Transponere en matrise
  • Multipliser to matriser

Å bruke nestede lister som en matrise fungerer for enkle beregningsoppgaver, men det er en bedre måte å jobbe med matriser i Python ved hjelp av NumPy-pakken.

NumPy Array

NumPy er en pakke for vitenskapelig databehandling som har støtte for et kraftig N-dimensjonalt array-objekt. Før du kan bruke NumPy, må du installere det. For mer info,

  • Besøk: Hvordan installere NumPy?
  • Hvis du bruker Windows, laster du ned og installerer anacondadistribusjon av Python. Den leveres med NumPy og andre flere pakker relatert til datavitenskap og maskinlæring.

Når NumPy er installert, kan du importere og bruke den.

NumPy gir flerdimensjonalt antall tall (som faktisk er et objekt). La oss ta 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, kalles NumPys array-klasse ndarray.

Hvordan lage et NumPy-utvalg?

Det er flere måter å lage NumPy-matriser på.

1. Array av heltall, flyter og komplekse tall

 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 kjører programmet, vil utdataene 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. Array av 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 spesifisert dtypetil 32 bits (4 byte). Derfor kan denne matrisen ta verdier fra til .-2-312-31-1

3. Bruke 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 mer om andre måter å lage en NumPy-matrise på.

Matriseoperasjoner

Ovenfor ga vi deg tre eksempler: tillegg av to matriser, multiplikasjon av to matriser og transponering av en matrise. Vi brukte nestede lister før for å skrive disse programmene. La oss se hvordan vi kan gjøre den samme oppgaven ved hjelp av NumPy-matrisen.

Tillegg av to matriser

Vi bruker +operator for å legge til tilsvarende elementer i to 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)) '''

Multiplikasjon av to matriser

For å multiplisere to matriser bruker vi dot()metode. Lær mer om hvordan numpy.dot fungerer.

Merk: * brukes til matriksmultiplikasjon (multiplikasjon av tilsvarende elementer i to matriser) ikke matrisemultiplikasjon.

 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 matrise

Vi bruker numpy.transpose for å beregne transponere av en matrise.

 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 oppgaven vår mye enklere.

Få tilgang til matriseelementer, rader og kolonner

Få tilgang til matriseelementer

Tilsvarende lister, vi kan få tilgang til matriseelementer ved hjelp av indeks. La oss starte med en endimensjonal NumPy-matrise.

 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 

Når du kjører programmet, vil utdataene være:

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

La oss nå se hvordan vi kan få tilgang til elementer i et todimensjonalt array (som egentlig er en matrise).

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

Når vi kjører programmet, vil utdataene være:

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

Få tilgang til rader i en matrise

 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)

Når vi kjører programmet, vil utdataene være:

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

Få tilgang til kolonner i en matrise

 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) 

Når vi kjører programmet, vil utdataene være:

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

Hvis du ikke vet hvordan denne ovennevnte koden fungerer, kan du lese delingen av en matrise-delen av denne artikkelen.

Slicing of a Matrix

Skjæring av en endimensjonal NumPy-matrise ligner på en liste. Hvis du ikke vet hvordan kutting av en liste fungerer, kan du gå til Forstå Pythons snittnotasjon.

La oss ta 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) 

La oss nå se hvordan vi kan kutte en matrise.

 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 ser, gjør bruk av NumPy (i stedet for nestede lister) det mye enklere å jobbe med matriser, og vi har ikke engang klø på det grunnleggende. Vi foreslår at du utforsker NumPy-pakken i detalj, spesielt hvis du prøver å bruke Python til datavitenskap / analyse.

NumPy Resources du kan finne nyttige:

  • NumPy opplæring
  • NumPy-referanse

Interessante artikler...