Python matrica un ievads NumPy

Šajā rakstā mēs uzzināsim par Python matricām, izmantojot ligzdotos sarakstus, un NumPy pakotni.

Matrica ir divdimensiju datu struktūra, kur skaitļi ir sakārtoti rindās un kolonnās. Piemēram:

Šī matrica ir 3x4 matrica (izrunā "trīs pa četriem"), jo tai ir 3 rindas un 4 kolonnas.

Python matrica

Python nav iebūvēta veida matricām. Tomēr saraksta sarakstu mēs varam uzskatīt par matricu. Piemēram:

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

Mēs varam uzskatīt šo saraksta sarakstu par matricu, kurai ir 2 rindas un 3 kolonnas.

Pirms šī raksta turpināšanas noteikti uzziniet par Python sarakstiem.

Apskatīsim, kā strādāt ar ligzdotu sarakstu.

 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) 

Kad mēs palaidīsim programmu, izeja būs:

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

Šeit ir vēl daži piemēri, kas saistīti ar Python matricām, kurās tiek izmantoti ligzdoti saraksti.

  • Pievienojiet divas matricas
  • Transponējiet matricu
  • Reiziniet divas matricas

Izmantojot ligzdotos sarakstus kā matricu, var veikt vienkāršus skaitļošanas uzdevumus, tomēr ir labāks veids, kā strādāt ar matricām Python, izmantojot NumPy pakotni.

NumPy masīvs

NumPy ir pakete zinātniskai skaitļošanai, kas atbalsta spēcīgu N dimensiju masīva objektu. Lai varētu izmantot NumPy, tas ir jāinstalē. Lai iegūtu vairāk informācijas,

  • Apmeklējums: Kā instalēt NumPy?
  • Ja izmantojat operētājsistēmu Windows, lejupielādējiet un instalējiet Python anaconda izplatīšanu. Tas nāk ar NumPy un citām vairākām paketēm, kas saistītas ar datu zinātni un mašīnmācīšanos.

Kad NumPy ir instalēts, varat to importēt un izmantot.

NumPy nodrošina daudzdimensionālu skaitļu masīvu (kas faktiski ir objekts). Ņemsim piemēru:

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

Kā redzat, tiek izsaukta NumPy masīvu klase ndarray.

Kā izveidot NumPy masīvu?

NumPy masīvu izveidošanai ir vairāki veidi.

1. Veselu skaitļu, pludiņu un komplekso skaitļu masīvs

 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) 

Palaidot programmu, izeja būs:

 ((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. Nulles un vienumu masīvs

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

Šeit mēs esam norādījuši dtype32 bitus (4 baitus). Tādējādi šis masīvs var iegūt vērtības no līdz .-2-312-31-1

3. Arange () un formas () izmantošana

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

Uzziniet vairāk par citiem veidiem, kā izveidot masīvu NumPy.

Matricas operācijas

Iepriekš mēs sniedzām jums 3 piemērus: divu matricu pievienošana, divu matricu reizināšana un matricas transponēšana. Lai rakstītu šīs programmas, mēs iepriekš izmantojām ligzdotus sarakstus. Apskatīsim, kā mēs varam paveikt to pašu uzdevumu, izmantojot NumPy masīvu.

Divu matricu pievienošana

Mēs izmantojam +operatoru, lai pievienotu atbilstošus divu NumPy matricu 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)) '''

Divu matricu reizināšana

Lai reizinātu divas matricas, mēs izmantojam dot()metodi. Uzziniet vairāk par numpy.dot darbību.

Piezīme: * tiek izmantots masīvu reizināšanai (divu masīvu atbilstošo elementu reizināšanai), nevis matricas reizināšanai.

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

Transponēt matricu

Mēs izmantojam numpy.transpose, lai aprēķinātu matricas transponēšanu.

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

Kā redzat, NumPy ievērojami atviegloja mūsu uzdevumu.

Piekļūstiet matricas elementiem, rindām un kolonnām

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.

Ņemsim piemēru:

 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) 

Tagad redzēsim, kā mēs varam sagriezt matricu.

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

Kā redzat, izmantojot NumPy (ligzdoto sarakstu vietā), ir daudz vieglāk strādāt ar matricām, un mēs pat neesam saskrāpējuši pamatus. Mēs iesakām detalizēti izpētīt NumPy pakotni, īpaši, ja mēģināt izmantot Python datu zinātnei / analītikai.

NumPy resursi, kas jums varētu noderēt:

  • NumPy apmācība
  • NumPy atsauce

Interesanti raksti...