logo

파이썬 – 매트릭스

여기에서는 이 튜토리얼에서 Python을 사용하여 행렬을 구성하는 방법에 대해 다양한 방법을 논의하고 행렬에서 수행할 수 있는 다양한 작업에 대해서도 논의할 것입니다. 우리는 또한 Python에서 행렬과 그 연산을 형성하기 위한 외부 모듈 Numpy를 다룰 것입니다.

Python의 행렬

매트릭스란 무엇인가?

행렬은 행과 열의 직사각형 배열로 배열된 숫자의 모음입니다. 공학, 물리학, 통계 및 그래픽 분야에서 행렬은 그림 회전 및 기타 유형의 변환을 표현하는 데 널리 사용됩니다.
행렬은 m×n 행렬이라고 하며 기호로 표시됩니다. mxn m개의 행과 n개의 열이 있는 경우.



Python을 사용하여 간단한 행렬 만들기

방법 1: 목록 목록을 사용하여 행렬 만들기

여기서는 목록의 목록을 사용하여 행렬을 생성하겠습니다.

파이썬3








matrix>=> [[>1>,>2>,>3>,>4>],> >[>5>,>6>,>7>,>8>],> >[>9>,>10>,>11>,>12>]]> print>(>'Matrix ='>, matrix)>

>

>

산출:

Matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]>

방법 2: Python에서 사용자로부터 행렬 입력 받기

여기서는 사용자로부터 여러 행과 열을 가져와 매트릭스를 인쇄합니다.

파이썬3


마크다운 밑줄



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

>

>

산출:

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>

시간 복잡도: O(n*n)
보조 공간: O(n*n)

방법 3: 목록 이해를 사용하여 행렬 만들기

List Comprehension은 Python에서 목록을 정의하고 생성하는 우아한 방법입니다. 우리는 4행과 4열을 인쇄하기 위해 range 함수를 사용하고 있습니다.

파이썬3




matrix>=> [[column>for> column>in> range>(>4>)]>for> row>in> range>(>4>)]> print>(matrix)>

>

>

산출:

[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]>

행렬에 값 할당

방법 1: Matrix의 개별 셀에 값 할당

여기서는 매트릭스의 개별 셀(행 1개와 열 1개 = 11)을 대체하고 값을 할당합니다.

파이썬3




X>=> [[>1>,>2>,>3>], [>4>,>5>,>6>], [>7>,>8>,>9>]]> row>=> column>=> 1> X[row][column]>=> 11> print>(X)>

>

>

산출:

[[1, 2, 3], [4, 11 , 6], [7, 8, 9]]>

방법 2: Matrix에서 음수 인덱싱을 사용하여 개별 셀에 값 할당

여기서는 매트릭스의 개별 셀(-2행 및 -1열 = 21)에 값을 바꾸고 할당합니다.

파이썬3




row>=> ->2> column>=> ->1> X[row][column]>=> 21> print>(X)>

>

>

산출:

[[1, 2, 3], [4, 5, 21 ], [7, 8, 9]]>

행렬의 값에 액세스

방법 1: 매트릭스 값에 액세스

여기서는 행과 열을 전달하여 Matrix의 요소에 액세스합니다.

파이썬3




print>(>'Matrix at 1 row and 3 column='>, X[>0>][>2>])> print>(>'Matrix at 3 row and 3 column='>, X[>2>][>2>])>

>

>

산출:

Matrix at 1 row and 3 column= 3 Matrix at 3 row and 3 column= 9>

방법 2: 음수 인덱싱을 사용하여 행렬 값에 액세스

여기서는 음수 인덱싱에 행과 열을 전달하여 행렬의 요소에 액세스합니다.

파이썬3




import> numpy as np> X>=> [[>1>,>2>,>3>], [>4>,>5>,>6>], [>7>,>8>,>9>]]> print>(X[>->1>][>->2>])>

>

>

산출:

8>

Python에서 행렬을 사용한 수학 연산

예제 1: Python에서 for 루프를 사용하여 행렬에 값 추가

여기서는 Python for 루프를 사용하여 두 개의 행렬을 추가합니다.

파이썬3




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

>

>

산출:

[10, 10, 10] [10, 10, 10] [10, 10, 10]>

시간 복잡도: O(n*n)
보조 공간: O(n*n)

예제 2: List Comprehension을 사용하여 행렬에 값 더하기 및 빼기

목록 이해를 사용하여 기본 덧셈과 뺄셈을 수행합니다.

파이썬3


초기 무커



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

>

>

산출:

Matrix Addition [10, 10, 10] [10, 10, 10] [10, 10, 10] Matrix Subtraction [-8, -6, -4] [-2, 0, 2] [4, 6, 8]>

시간 복잡도: O(n*n)
보조 공간: O(n*n)

예제 3: 두 행렬을 곱하고 나누는 Python 프로그램

Python 루프를 사용하여 기본 곱셈과 나눗셈을 수행합니다.

파이썬3




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

>

>

산출:

Matrix Multiplication [9, 16, 21] [24, 25, 24] [21, 16, 9] Matrix Division [0, 0, 0] [0, 1, 1] [2, 4, 9]>

시간 복잡도: O(n*n)
보조 공간: O(n*n)

행렬에서 전치

예: 루프를 사용하여 행렬을 전치하는 Python 프로그램

행렬의 전치는 행을 열로, 열을 행으로 변경하여 얻습니다. 즉, A[][]의 전치는 A[i][j]를 A[j][i]로 변경하여 얻습니다.

파이썬3




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

>

>

산출:

[9, 6, 3] [8, 5, 2] [7, 4, 1]>

시간 복잡도: O(n*n)
보조 공간: O(n*n)

Numpy를 사용한 행렬

Numpy를 사용하여 행렬 만들기

여기서는 numpy.random과 a를 사용하여 Numpy 배열을 생성합니다. 무작위 모듈 .

파이썬3




import> numpy as np> > # 1st argument -->0부터 9까지의 숫자,> # 2nd argument, row = 3, col = 3> array>=> np.random.randint(>10>, size>=>(>3>,>3>))> print>(array)>

문자열을 int로 변환하는 방법

>

>

산출:

[[2 7 5] [8 5 1] [8 4 6]]>

Numpy를 사용하는 Python의 행렬 수학 연산

여기서는 Numpy를 사용하여 덧셈, 곱셈, 나눗셈과 같은 다양한 수학 연산을 다룹니다.

파이썬3




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

>

>

산출:

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

매트릭스를 이용한 점과 외적

여기서는 Python에서 NumPy를 사용하여 행렬과 벡터의 내부, 외부 및 교차곱을 찾습니다.

파이썬3




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

>

>

산출:

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

Numpy를 사용하여 Python에서 행렬 전치

행렬에서 전치 연산을 수행하려면 다음을 사용할 수 있습니다. numpy.transpose() 방법.

파이썬3




알파벳의 숫자

matrix>=> [[>1>,>2>,>3>], [>4>,>5>,>6>]]> print>(>' '>, numpy.transpose(matrix))>

>

>

산출:

[[1 4][2 5][3 6]]>

만들기 빈 행렬 Python에서 NumPy를 사용하여

다음을 사용하여 빈 배열을 초기화합니다. np.제로() .

파이썬3




a>=> np.zeros([>2>,>2>], dtype>=>int>)> print>(>' Matrix of 2x2: '>, a)> c>=> np.zeros([>3>,>3>])> print>(>' Matrix of 3x3: '>, c)>

>

>

산출:

Matrix of 2x2: [[0 0] [0 0]] Matrix of 3x3: [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]>

슬라이싱 Numpy를 사용하여 매트릭스에서

슬라이싱은 행렬에서 특정 행과 열을 선택한 다음 선택되지 않은 요소를 모두 제거하여 새 행렬을 만드는 프로세스입니다. 첫 번째 예에서는 전체 행렬을 인쇄하고, 두 번째 예에서는 2를 초기 인덱스로, 3을 마지막 인덱스로, 인덱스 점프를 1로 전달합니다. 다음 인쇄에서도 동일한 내용이 사용되어 방금 인덱스를 변경했습니다. 2로 점프하세요.

파이썬3




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

>

>

산출:

[[ 6 8 10] [ 9 -12 15] [ 12 16 20] [ 15 -20 25]] Slicing Third Row-Second Column: [16] Slicing Third Row-Third Column: [20]>

Numpy를 사용하여 행과 열 삭제

여기서는 np.delete() 함수를 사용하여 행을 삭제하려고 합니다. 코드에서 먼저 0을 삭제하려고 시도했습니다.행을 삭제한 다음 2를 삭제하려고 했습니다.nd행, 그 다음에는 3rd열.

파이썬3




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

>

>

산출:

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

Numpy 배열에 행/열 추가

4에 열을 하나 더 추가했습니다.np.hstack을 사용하여 위치를 지정합니다.

파이썬3




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

>

>

산출:

resultant array [[ 6 8 10 1] [ 9 -12 15 2] [ 15 -20 25 3]]>