Šioje pamokoje aptarsime įvairius būdus, kaip sudaryti matricą naudojant Python, taip pat aptarsime įvairias operacijas, kurias galima atlikti su matrica. taip pat apžvelgsime išorinį modulį Numpy, kad sudarytume matricą, ir jo operacijas Python.
Kas yra matrica?
Matrica yra skaičių rinkinys, išdėstytas stačiakampiu masyvu eilutėmis ir stulpeliais. Inžinerijos, fizikos, statistikos ir grafikos srityse matricos plačiai naudojamos vaizdų sukimuisi ir kitokioms transformacijoms išreikšti.
Matrica vadinama matrica m x n, žymima simboliu m x n jei yra m eilučių ir n stulpelių.
Paprastos matricos kūrimas naudojant Python
1 būdas: matricos su sąrašo sąrašu kūrimas
Čia mes sukursime matricą naudodami sąrašų sąrašą.
Python3
matrix>=> [[>1>,>2>,>3>,>4>],> >[>5>,>6>,>7>,>8>],> >[>9>,>10>,>11>,>12>]]> print>(>'Matrix ='>, matrix)> |
>
>
Išvestis:
Matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]>
2 būdas: paimkite Matrix įvestį iš vartotojo Python
Čia mes paimame iš vartotojo eilučių ir stulpelių ir išspausdiname Matricą.
Python3
Row>=> int>(>input>(>'Enter the number of rows:'>))> Column>=> int>(>input>(>'Enter the number of columns:'>))> # Initialize matrix> matrix>=> []> print>(>'Enter the entries row wise:'>)> # For user input> # A for loop for row entries> for> row>in> range>(Row):> >a>=> []> ># A for loop for column entries> >for> column>in> range>(Column):> >a.append(>int>(>input>()))> >matrix.append(a)> # For printing the matrix> for> row>in> range>(Row):> >for> column>in> range>(Column):> >print>(matrix[row][column], end>=>' '>)> >print>()> |
>
>
Išvestis:
Enter the number of rows:2 Enter the number of columns:2 Enter the entries row wise: 5 6 7 8 5 6 7 8>
Laiko sudėtingumas: O(n*n)
Pagalbinė erdvė: O(n*n)
3 būdas. Sukurkite matricą naudodami sąrašo supratimą
Sąrašo supratimas yra elegantiškas būdas apibrėžti ir sukurti sąrašą Python, mes naudojame diapazono funkciją 4 eilučių ir 4 stulpelių spausdinimui.
Python3
matrix>=> [[column>for> column>in> range>(>4>)]>for> row>in> range>(>4>)]> print>(matrix)> |
>
>
Išvestis:
[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]>
Vertės priskyrimas matricoje
1 būdas: priskirkite reikšmę atskiram Matricos langeliui
Čia mes pakeičiame ir priskiriame reikšmę atskiram langeliui (1 eilutė ir 1 stulpelis = 11) Matricoje.
Python3
X>=> [[>1>,>2>,>3>], [>4>,>5>,>6>], [>7>,>8>,>9>]]> row>=> column>=> 1> X[row][column]>=> 11> print>(X)> |
>
>
Išvestis:
[[1, 2, 3], [4, 11 , 6], [7, 8, 9]]>
2 būdas: priskirkite reikšmę atskiram langeliui naudodami neigiamą indeksavimą Matrix
Čia mes pakeičiame ir priskiriame reikšmę atskiram langeliui (-2 eilutė ir -1 stulpelis = 21) Matricoje.
java konvertuoti sveikąjį skaičių į eilutę
Python3
row>=> ->2> column>=> ->1> X[row][column]>=> 21> print>(X)> |
>
>
Išvestis:
[[1, 2, 3], [4, 5, 21 ], [7, 8, 9]]>
Prieiga prie vertės matricoje
1 būdas: prieiga prie matricos reikšmių
Čia mes pasiekiame Matricos elementus, perduodami eilutę ir stulpelį.
Python3
print>(>'Matrix at 1 row and 3 column='>, X[>0>][>2>])> print>(>'Matrix at 3 row and 3 column='>, X[>2>][>2>])> |
>
>
Išvestis:
Matrix at 1 row and 3 column= 3 Matrix at 3 row and 3 column= 9>
2 būdas: prieiga prie matricos reikšmių naudojant neigiamą indeksavimą
Čia mes pasiekiame Matricos elementus, perduodami jos eilutę ir stulpelį neigiamam indeksavimui.
Python3
import> numpy as np> X>=> [[>1>,>2>,>3>], [>4>,>5>,>6>], [>7>,>8>,>9>]]> print>(X[>->1>][>->2>])> |
>
>
Išvestis:
8>
Matematiniai veiksmai su matrica Python
1 pavyzdys: reikšmių įtraukimas į matricą su for kilpa python
Čia mes pridedame dvi matricas naudodami Python for-ciklą.
Python3
# Program to add two matrices using nested loop> X>=> [[>1>,>2>,>3>],[>4>,>5>,>6>], [>7>,>8>,>9>]]> Y>=> [[>9>,>8>,>7>], [>6>,>5>,>4>], [>3>,>2>,>1>]]> result>=> [[>0>,>0>,>0>], [>0>,>0>,>0>], [>0>,>0>,>0>]]> # iterate through rows> for> row>in> range>(>len>(X)):> ># iterate through columns> >for> column>in> range>(>len>(X[>0>])):> >result[row][column]>=> X[row][column]>+> Y[row][column]> for> r>in> result:> >print>(r)> |
>
>
Išvestis:
[10, 10, 10] [10, 10, 10] [10, 10, 10]>
Laiko sudėtingumas: O(n*n)
Pagalbinė erdvė: O(n*n)
2 pavyzdys: reikšmių pridėjimas ir atėmimas į matricą su sąrašo supratimu
Pagrindinės sudėties ir atimties atlikimas naudojant sąrašo supratimą.
Python3
java iterate žemėlapis
Add_result>=> [[X[row][column]>+> Y[row][column]> >for> column>in> range>(>len>(X[>0>]))]> >for> row>in> range>(>len>(X))]> Sub_result>=> [[X[row][column]>-> Y[row][column]> >for> column>in> range>(>len>(X[>0>]))]> >for> row>in> range>(>len>(X))]> print>(>'Matrix Addition'>)> for> r>in> Add_result:> >print>(r)> print>(>'
Matrix Subtraction'>)> for> r>in> Sub_result:> >print>(r)> |
>
>
Išvestis:
Matrix Addition [10, 10, 10] [10, 10, 10] [10, 10, 10] Matrix Subtraction [-8, -6, -4] [-2, 0, 2] [4, 6, 8]>
Laiko sudėtingumas: O(n*n)
Pagalbinė erdvė: O(n*n)
3 pavyzdys: Python programa, skirta padauginti ir padalyti dvi matricas
Pagrindinio daugybos ir dalybos atlikimas naudojant Python kilpą.
Python3
rmatrix>=> [[>0>,>0>,>0>], [>0>,>0>,>0>], [>0>,>0>,>0>]]> for> row>in> range>(>len>(X)):> >for> column>in> range>(>len>(X[>0>])):> >rmatrix[row][column]>=> X[row][column]>*> Y[row][column]> > print>(>'Matrix Multiplication'>,)> for> r>in> rmatrix:> >print>(r)> > for> i>in> range>(>len>(X)):> >for> j>in> range>(>len>(X[>0>])):> >rmatrix[row][column]>=> X[row][column]>/>/> Y[row][column]> print>(>'
Matrix Division'>,)> for> r>in> rmatrix:> >print>(r)> |
kuris išrado mokyklą
>
>
Išvestis:
Matrix Multiplication [9, 16, 21] [24, 25, 24] [21, 16, 9] Matrix Division [0, 0, 0] [0, 1, 1] [2, 4, 9]>
Laiko sudėtingumas: O(n*n)
Pagalbinė erdvė: O(n*n)
Transponuoti į matricą
Pavyzdys: Python programa, skirta perkelti matricą naudojant kilpą
Matricos perkėlimas gaunamas keičiant eilutes į stulpelius ir stulpelius į eilutes. Kitaip tariant, A[][] perkėlimas gaunamas pakeitus A[i][j] į A[j][i].
Python3
X>=> [[>9>,>8>,>7>], [>6>,>5>,>4>], [>3>,>2>,>1>]]> result>=> [[>0>,>0>,>0>], [>0>,>0>,>0>], [>0>,>0>,>0>]]> # iterate through rows> for> row>in> range>(>len>(X)):> ># iterate through columns> >for> column>in> range>(>len>(X[>0>])):> >result[column][row]>=> X[row][column]> for> r>in> result:> >print>(r)> > # # Python Program to Transpose a Matrix using the list comprehension> # rez = [[X[column][row] for column in range(len(X))]> # for row in range(len(X[0]))]> # for row in rez:> # print(row)> |
>
>
Išvestis:
[9, 6, 3] [8, 5, 2] [7, 4, 1]>
Laiko sudėtingumas: O(n*n)
Pagalbinė erdvė: O(n*n)
Matrica naudojant Numpy
Sukurkite matricą naudodami Numpy
Čia mes kuriame Numpy masyvą naudodami numpy.random ir a atsitiktinis modulis .
Python3
import> numpy as np> > # 1st argument -->skaičiai nuo 0 iki 9,> # 2nd argument, row = 3, col = 3> array>=> np.random.randint(>10>, size>=>(>3>,>3>))> print>(array)> |
>
>
Išvestis:
[[2 7 5] [8 5 1] [8 4 6]]>
Matricos matematiniai veiksmai Python naudojant Numpy
Čia apžvelgiame įvairias matematines operacijas, tokias kaip sudėties atimtis, daugyba ir padalijimas naudojant Numpy.
Python3
# initializing matrices> x>=> numpy.array([[>1>,>2>], [>4>,>5>]])> y>=> numpy.array([[>7>,>8>], [>9>,>10>]])> # using add() to add matrices> print> (>'The element wise addition of matrix is : '>)> print> (numpy.add(x,y))> # using subtract() to subtract matrices> print> (>'The element wise subtraction of matrix is : '>)> print> (numpy.subtract(x,y))> print> (>'The element wise multiplication of matrix is : '>)> print> (numpy.multiply(x,y))> # using divide() to divide matrices> print> (>'The element wise division of matrix is : '>)> print> (numpy.divide(x,y))> |
>
>
Išvestis:
The element wise addition of matrix is : [[ 8 10] [13 15]] The element wise subtraction of matrix is : [[-6 -6] [-5 -5]] The element wise multiplication of matrix is : [[ 7 16] [36 50]] The element wise division of matrix is : [[0.14285714 0.25 ] [0.44444444 0.5 ]]>
Taškas ir kryžminis produktas su Matrica
Čia rasime vidinį, išorinį ir kryžminį matricų ir vektorių sandaugą naudodami NumPy programoje Python.
Python3
X>=> [[>1>,>2>,>3>],[>4>,>5>,>6>],[>7>,>8>,>9>]]> Y>=> [[>9>,>8>,>7>], [>6>,>5>,>4>],[>3>,>2>,>1>]]> dotproduct>=> np.dot(X, Y)> print>(>'Dot product of two array is:'>, dotproduct)> dotproduct>=> np.cross(X, Y)> print>(>'Cross product of two array is:'>, dotproduct)> |
>
>
Išvestis:
Dot product of two array is: [[ 30 24 18] [ 84 69 54] [138 114 90]] Cross product of two array is: [[-10 20 -10] [-10 20 -10] [-10 20 -10]]>
Matricos perkėlimas į Python naudojant Numpy
Norėdami atlikti transponavimo operaciją matricoje, galime naudoti numpy.transpose() metodas.
Python3
matrix>=> [[>1>,>2>,>3>], [>4>,>5>,>6>]]> print>(>'
'>, numpy.transpose(matrix))> |
>
>
Išvestis:
[[1 4][2 5][3 6]]>
Sukurti an tuščia matrica su NumPy Python
Tuščio masyvo inicijavimas naudojant np.zeros() .
Python3
a>=> np.zeros([>2>,>2>], dtype>=>int>)> print>(>'
Matrix of 2x2:
'>, a)> c>=> np.zeros([>3>,>3>])> print>(>'
Matrix of 3x3:
'>, c)> |
>
>
ms word greitosios prieigos įrankių juosta
Išvestis:
Matrix of 2x2: [[0 0] [0 0]] Matrix of 3x3: [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]>
Pjaustymas Matrix naudojant Numpy
Pjaustymas – tai konkrečių eilučių ir stulpelių parinkimas iš matricos ir naujos matricos sukūrimas pašalinant visus nepasirinktus elementus. Pirmajame pavyzdyje spausdiname visą matricą, antrajame perduodame 2 kaip pradinį indeksą, 3 kaip paskutinį indeksą ir indekso šuolį kaip 1. Tas pats naudojamas kitame spaudinyje, ką tik pakeitėme indeksą pereiti prie 2.
Python3
X>=> np.array([[>6>,>8>,>10>],> >[>9>,>->12>,>15>],> >[>12>,>16>,>20>],> >[>15>,>->20>,>25>]])> # Example of slicing> # Syntax: Lst[ Initial: End: IndexJump ]> print>(X[:])> print>(>'
Slicing Third Row-Second Column: '>, X[>2>:>3>,>1>])> print>(>'
Slicing Third Row-Third Column: '>, X[>2>:>3>,>2>])> |
>
>
Išvestis:
[[ 6 8 10] [ 9 -12 15] [ 12 16 20] [ 15 -20 25]] Slicing Third Row-Second Column: [16] Slicing Third Row-Third Column: [20]>
Ištrinkite eilutes ir stulpelius naudodami Numpy
Čia mes bandome ištrinti eilutes naudodami funkciją np.delete() . Kode pirmiausia bandėme ištrinti 0theilutę, tada bandėme ištrinti 2ndeilutę, o tada 3rdeilė.
Python3
# create an array with integers> # with 3 rows and 4 columns> a>=> np.array([[>6>,>8>,>10>],> >[>9>,>->12>,>15>],> >[>12>,>16>,>20>],> >[>15>,>->20>,>25>]])> # delete 0 th row> data>=> np.delete(a,>0>,>0>)> print>(>'data after 0 th row deleted: '>, data)> # delete 1 st row> data>=> np.delete(a,>1>,>0>)> print>(>'
data after 1 st row deleted: '>, data)> # delete 2 nd row> data>=> np.delete(a,>2>,>0>)> print>(>'
data after 2 nd row deleted: '>, data)> |
>
>
Išvestis:
data after 0 th row deleted: [[ 9 -12 15] [ 12 16 20] [ 15 -20 25]] data after 1 st row deleted: [[ 6 8 10] [ 12 16 20] [ 15 -20 25]] data after 2 nd row deleted: [[ 6 8 10] [ 9 -12 15] [ 15 -20 25]]>
Pridėkite eilutę / stulpelius į Numpy masyvą
Prie 4 pridėjome dar vieną stulpelįthpadėtis naudojant np.hstack .
Python3
ini_array>=> np.array([[>6>,>8>,>10>],> >[>9>,>->12>,>15>],> >[>15>,>->20>,>25>]])> # Array to be added as column> column_to_be_added>=> np.array([>1>,>2>,>3>])> # Adding column to numpy array> result>=> np.hstack((ini_array, np.atleast_2d(column_to_be_added).T))> # printing result> print>(>'
resultant array
'>,>str>(result))> |
>
>
Išvestis:
resultant array [[ 6 8 10 1] [ 9 -12 15 2] [ 15 -20 25 3]]>