Pythoni maatriks ja sissejuhatus NumPysse

Selles artiklis tutvume Pythoni maatriksitega pesastatud loendite ja NumPy paketi abil.

Maatriks on kahemõõtmeline andmestruktuur, kus numbrid on paigutatud ridadeks ja veergudeks. Näiteks:

See maatriks on 3x4 (hääldatakse "kolm korda neli") maatriks, kuna sellel on 3 rida ja 4 veergu.

Pythoni maatriks

Pythonil pole maatriksite jaoks sisseehitatud tüüpi. Siiski võime loendi loendit käsitleda maatriksina. Näiteks:

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

Me võime seda loendi loendit käsitleda maatriksina, millel on 2 rida ja 3 veergu.

Enne selle artikli jätkamist lugege kindlasti Pythoni loendeid.

Vaatame, kuidas pesastatud loendiga töötada.

 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) 

Programmi käivitamisel on väljund:

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

Siin on veel mõned näited Pythoni maatriksitest, mis kasutavad pesastatud loendeid.

  • Lisage kaks maatriksit
  • Teisaldage maatriks
  • Korrutage kaks maatriksit

Pesastatud loendite kasutamine maatriksina töötab lihtsate arvutusülesannete jaoks, kuid on parem viis Pythonis maatriksitega töötamiseks, kasutades NumPy paketti.

NumPy massiiv

NumPy on teadusliku arvutamise pakett, mis toetab tugevat N-mõõtmelist massiiviobjekti. Enne NumPy kasutamist peate selle installima. Lisateabe saamiseks

  • Külastage: Kuidas NumPy installida?
  • Kui kasutate Windowsi, laadige alla ja installige Pythoni anakonda levitamine. Kaasas on NumPy ja muud mitmed andmeteaduse ja masinõppega seotud paketid.

Kui NumPy on installitud, saate selle importida ja kasutada.

NumPy pakub mitmemõõtmelist numbrite massiivi (mis on tegelikult objekt). Võtame näite:

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

Nagu näete, kutsutakse NumPy massiiviklassi ndarray.

Kuidas luua NumPy massiivi?

NumPy massiivide loomiseks on mitu võimalust.

1. Täisarvude, ujukite ja kompleksarvude massiiv

 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) 

Programmi käivitamisel on väljund järgmine:

 ((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. Nullide ja üksuste massiiv

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

Siin oleme määranud dtype32 bitti (4 baiti). Seega võib see massiiv võtta väärtusi vahemikus kuni .-2-312-31-1

3. Kasutades arange () ja kuju ()

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

Lisateave NumPy massiivi loomise muude viiside kohta.

Maatriksioperatsioonid

Eespool tõime teile 3 näidet: kahe maatriksi liitmine, kahe maatriksi korrutamine ja maatriksi üleviimine. Nende programmide kirjutamiseks kasutasime enne pesastatud loendeid. Vaatame, kuidas saame NumPy massiivi abil sama ülesande teha.

Kahe maatriksi liitmine

Me kasutame +operaator, et lisada vastavad elemendid kahe NumPy maatriksid.

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

Kahe maatriksi korrutamine

Kahe maatriksi korrutamiseks kasutame dot()meetodit. Lisateave numpy.dot toimimise kohta.

Märkus: * kasutatakse massiivide korrutamiseks (kahe massiivi vastavate elementide korrutamiseks), mitte maatriksiga korrutamiseks.

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

Maatriksi üleviimine

Maatriksi üleviimise arvutamiseks kasutame 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)) ''' 

Nagu näete, tegi NumPy meie ülesande palju lihtsamaks.

Juurdepääs maatriksielementidele, ridadele ja veergudele

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.

Võtame näite:

 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) 

Vaatame nüüd, kuidas saame maatriksi lõigata.

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

Nagu näete, muudab NumPy (pesastatud loendite asemel) kasutamine maatriksitega töötamise palju lihtsamaks ja me pole isegi põhitõdesid kriimustanud. Soovitame teil NumPy paketti üksikasjalikult uurida, eriti kui proovite Pythoni kasutada andmeteaduse / analüüsi jaoks.

NumPy ressursid, mis võivad teile kasulikud olla:

  • NumPy juhendaja
  • NumPy viide

Huvitavad Artiklid...