„Python Matrix“ ir „NumPy“ įvadas

Šiame straipsnyje mes sužinosime apie „Python“ matricas naudojant įdėtus sąrašus ir „NumPy“ paketą.

Matrica yra dvimatė duomenų struktūra, kurioje skaičiai yra išdėstyti į eilutes ir stulpelius. Pavyzdžiui:

Ši matrica yra 3x4 (tariama „trys po keturis“) matrica, nes joje yra 3 eilutės ir 4 stulpeliai.

„Python Matrix“

„Python“ neturi įmontuoto tipo matricoms. Tačiau sąrašo sąrašą galime traktuoti kaip matricą. Pavyzdžiui:

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

Šį sąrašo sąrašą galime traktuoti kaip matricą, turinčią 2 eilutes ir 3 stulpelius.

Prieš tęsdami šį straipsnį, būtinai sužinokite apie „Python“ sąrašus.

Pažiūrėkime, kaip dirbti su įdėtu sąrašu.

 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) 

Kai vykdysime programą, išvestis bus:

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

Čia yra dar keli pavyzdžiai, susiję su „Python“ matricomis, naudojant įdėtus sąrašus.

  • Pridėkite dvi matricas
  • Perkelkite matricą
  • Padauginkite dvi matricas

Naudojant įdėtus sąrašus kaip matricą, atliekamos paprastos skaičiavimo užduotys, tačiau yra geresnis būdas dirbti su „Python“ matricomis naudojant „NumPy“ paketą.

„NumPy“ masyvas

„NumPy“ yra mokslinio skaičiavimo paketas, palaikantis galingą N matmenų masyvo objektą. Kad galėtumėte naudoti „NumPy“, turite jį įdiegti. Norėdami gauti daugiau informacijos,

  • Apsilankykite: Kaip įdiegti „NumPy“?
  • Jei naudojate „Windows“, atsisiųskite ir įdiekite „Pyacon“ anaconda paskirstymą. Jis tiekiamas su „NumPy“ ir kitais keliais paketais, susijusiais su duomenų mokslu ir mašininiu mokymusi.

Įdiegę „NumPy“, galite jį importuoti ir naudoti.

NumPy pateikia daugiamatį skaičių masyvą (kuris iš tikrųjų yra objektas). Paimkime pavyzdį:

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

Kaip matote, „NumPy“ masyvo klasė vadinama ndarray.

Kaip sukurti „NumPy“ masyvą?

Yra keli būdai sukurti „NumPy“ masyvus.

1. Sveikųjų skaičių, plūduriuojančių ir kompleksinių skaičių masyvas

 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) 

Kai paleisite programą, išvestis bus:

 ((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. Nulių ir vienetų masyvas

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

Čia nurodėme dtype32 bitus (4 baitus). Taigi šis masyvas gali paimti reikšmes nuo iki .-2-312-31-1

3. Naudojant „arange“ () ir 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)) ''' 

Sužinokite daugiau apie kitus „NumPy“ masyvo kūrimo būdus.

Matricos operacijos

Aukščiau pateikėme 3 pavyzdžius: dviejų matricų pridėjimas, dviejų matricų padauginimas ir matricos perkėlimas. Anksčiau rašėme tas programas naudodami įdėtus sąrašus. Pažiūrėkime, kaip tą pačią užduotį galime atlikti naudodami „NumPy“ masyvą.

Dviejų matricų pridėjimas

Mes naudojame +operatorių, kad pridėtume atitinkamus dviejų „NumPy“ matricų elementus.

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

Dviejų matricų dauginimas

Norėdami padauginti dvi matricas, mes naudojame dot()metodą. Sužinokite daugiau apie tai, kaip veikia numpy.dot.

Pastaba: * naudojama masyvų dauginimui (dviejų masyvų atitinkamų elementų dauginimui), o ne matricos dauginimui.

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

Perkelti matricą

Matricos perkėlimui apskaičiuoti naudojame 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)) ''' 

Kaip matote, „NumPy“ labai palengvino mūsų užduotį.

Prieiga prie matricos elementų, eilučių ir stulpelių

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.

Paimkime pavyzdį:

 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) 

Pažiūrėkime, kaip galime suskaidyti matricą.

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

Kaip matote, naudojant „NumPy“ (vietoj įdėtųjų sąrašų) daug lengviau dirbti su matricomis, o mes net nesubraižėme pagrindų. Siūlome išsamiai išnagrinėti „NumPy“ paketą, ypač jei bandote naudoti „Python“ duomenų mokslui / analizei.

„NumPy“ ištekliai, kurie jums gali būti naudingi:

  • „NumPy“ pamoka
  • „NumPy“ nuoroda

Įdomios straipsniai...