Python Matrix in Uvod v NumPy

V tem članku bomo spoznali matrice Python z uporabo ugnezdenih seznamov in paketa NumPy.

Matrica je dvodimenzionalna podatkovna struktura, kjer so številke razporejene v vrstice in stolpce. Na primer:

Ta matrika je matrica 3x4 (izgovarja se "trikrat po štiri"), ker ima 3 vrstice in 4 stolpce.

Python Matrix

Python nima vgrajenega tipa za matrike. Vendar lahko seznam seznama obravnavamo kot matriko. Na primer:

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

Ta seznam lahko obravnavamo kot matrico z dvema vrsticama in 3 stolpci.

Pred nadaljevanjem tega članka se prepričajte o seznamih Pythona.

Poglejmo, kako delati z ugnezdenim seznamom.

 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) 

Ko zaženemo program, bo rezultat:

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

Tu je še nekaj primerov, povezanih z matricami Python z uporabo ugnezdenih seznamov.

  • Dodajte dve matriki
  • Prenesite matriko
  • Pomnožite dve matriki

Uporaba ugnezdenih seznamov kot matrike deluje pri preprostih računskih nalogah, vendar obstaja boljši način dela z matricami v Pythonu s pomočjo paketa NumPy.

Matrika NumPy

NumPy je paket za znanstveno računalništvo, ki podpira močan objekt N-dimenzionalnega polja. Preden lahko uporabite NumPy, ga morate namestiti. Za več informacij:

  • Obiščite: Kako namestiti NumPy?
  • Če uporabljate Windows, prenesite in namestite anaconda distribucijo Pythona. Na voljo je z NumPy in drugimi paketi, povezanimi z znanostjo o podatkih in strojnim učenjem.

Ko je NumPy nameščen, ga lahko uvozite in uporabite.

NumPy ponuja večdimenzionalno polje števil (ki je pravzaprav objekt). Vzemimo primer:

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

Kot lahko vidite, se pokliče matrični razred NumPy ndarray.

Kako ustvariti matriko NumPy?

Nizov NumPy lahko ustvarite na več načinov.

1. Niz celih števil, plavajočih in kompleksnih števil

 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) 

Ko zaženete program, bo rezultat:

 ((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. Niz ničel in enot

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

Tu smo določili dtype32 bitov (4 bajtov). Zato lahko ta matrika sprejme vrednosti od do .-2-312-31-1

3. Uporaba arange () in 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)) ''' 

Preberite več o drugih načinih ustvarjanja matrike NumPy.

Matrične operacije

Zgoraj smo vam podali 3 primere: seštevanje dveh matrik, množenje dveh matric in prenos matrike. Za pisanje teh programov smo prej uporabljali ugnezdene sezname. Poglejmo, kako lahko isto nalogo opravimo s pomočjo matrike NumPy.

Dodatek dveh matrik

Z +operatorjem dodajamo ustrezne elemente dveh matrik 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)) '''

Množenje dveh matrik

Za množenje dveh matric uporabimo dot()metodo. Preberite več o tem, kako deluje numpy.dot.

Opomba: * uporablja se za množenje matrike (množenje ustreznih elementov dveh nizov) in ne za matrično množenje.

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

Prenos matrike

Za izračun prenosa matrike uporabljamo numpy.transpose.

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

Kot lahko vidite, je NumPy našo nalogo precej olajšal.

Dostopajte do elementov matrike, vrstic in stolpcev

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.

Vzemimo primer:

 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) 

Zdaj pa poglejmo, kako lahko narežemo matrico.

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

Kot lahko vidite, uporaba NumPy (namesto ugnezdenih seznamov) olajša delo z matricami in niti osnov nismo opraskali. Predlagamo vam, da podrobno raziščete paket NumPy, še posebej, če poskušate Python uporabiti za podatkovno analizo / analitiko.

Viri NumPy bi se vam lahko zdeli koristni:

  • Vadnica za NumPy
  • Sklic na NumPy

Zanimive Članki...