산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

Python Matrix:전치, 곱셈, NumPy 배열 예제

파이썬 매트릭스란 무엇입니까?

Python 행렬은 행과 열에 저장된 데이터의 특수한 2차원 직사각형 배열입니다. 행렬의 데이터는 숫자, 문자열, 표현식, 기호 등이 될 수 있습니다. 행렬은 수학 및 과학 계산에 사용할 수 있는 중요한 데이터 구조 중 하나입니다.

이 Python 자습서에서는 다음을 배우게 됩니다.

Python 행렬은 어떻게 작동합니까?

행렬 형식의 2차원 배열 내부 데이터는 다음과 같습니다.

1단계)

2×2 행렬을 보여줍니다. 2개의 행과 2개의 열이 있습니다. 행렬 내부의 데이터는 숫자입니다. row1의 값은 2,3이고 row2의 값은 4,5입니다. col1의 값은 2,4이고 col2의 값은 3,5입니다.

2단계)

2×3 행렬을 보여줍니다. 두 개의 행과 세 개의 열이 있습니다. 첫 번째 행, 즉 row1의 데이터는 2,3,4 값을 가지며 row2는 5,6,7 값을 갖습니다. col1 열의 값은 2,5, col2의 값은 3,6, col3의 값은 4,7입니다.

마찬가지로 Python의 nxn 행렬 내부에 데이터를 저장할 수 있습니다. 행렬과 같은 덧셈, 뺄셈, 곱셈 등에 대해 많은 연산을 수행할 수 있습니다.

Python에는 행렬 데이터 유형을 구현하는 간단한 방법이 없습니다.

파이썬 행렬은 배열을 사용하며 똑같이 구현할 수 있습니다.

중첩 목록 데이터 유형을 사용하여 Python 매트릭스 만들기

Python에서 배열은 목록 데이터 유형을 사용하여 표현됩니다. 이제 목록을 사용하여 파이썬 행렬을 만들 것입니다.

아래와 같이 3×3 행렬을 생성합니다.

모든 행과 열이 있는 목록 내부의 행렬은 다음과 같습니다.

List = [[Row1], 
           [Row2], 
           [Row3]
           ...
           [RowN]]

따라서 위에 나열된 행렬에 따라 행렬 데이터가 있는 목록 유형은 다음과 같습니다.

M1 = [[8, 14, -6], [12,7,4], [-11,3,21]]

목록을 사용하여 Python Matrix 내부의 데이터를 읽으려면

위에서 정의한 매트릭스를 사용할 것입니다. 예제는 데이터를 읽고, 행렬을 인쇄하고, 각 행의 마지막 요소를 표시합니다.

예:행렬을 인쇄하려면

M1 = [[8, 14, -6], 
           [12,7,4], 
           [-11,3,21]]

#To print the matrix
print(M1)

출력:

The Matrix M1 =  [[8, 14, -6], [12, 7, 4], [-11, 3, 21]]

예시 2:각 행의 마지막 요소를 읽으려면

M1 = [[8, 14, -6],
           [12,7,4], 
           [-11,3,21]]

matrix_length = len(M1)

#To read the last element from each row.
for i in range(matrix_length):
    print(M1[i][-1])

출력:

-6
4
21

예시 3:행렬의 행을 인쇄하려면

M1 = [[8, 14, -6],
           [12,7,4], 
           [-11,3,21]]

matrix_length = len(M1)

#To print the rows in the Matrix
for i in range(matrix_length):
    print(M1[i])

출력:

[8, 14, -6]
[12, 7, 4]
[-11, 3, 21]

중첩 목록을 사용하여 행렬 추가

주어진 두 행렬을 쉽게 추가할 수 있습니다. 여기서 행렬은 목록 형식이 됩니다. 주어진 행렬을 추가하는 예를 살펴보겠습니다.

매트릭스 1:

M1 = [[8, 14, -6],
           [12,7,4], 
           [-11,3,21]]

매트릭스 2 :

M2 = [[3, 16, -6],
           [9,7,-4], 
           [-1,3,13]]

마지막은 M1 + M2의 결과를 저장할 행렬을 초기화합니다.

매트릭스 3:

M3  = [[0,0,0],
            [0,0,0],
            [0,0,0]]

예:행렬 추가

추가하기 위해 행렬은 주어진 두 행렬을 반복하는 for 루프를 사용합니다.

M1 = [[8, 14, -6], 
      [12,7,4], 
      [-11,3,21]]

M2 = [[3, 16, -6],
           [9,7,-4], 
           [-1,3,13]]

M3  = [[0,0,0],
       [0,0,0],
       [0,0,0]]
matrix_length = len(M1)

#To Add M1 and M2 matrices
for i in range(len(M1)):
for k in range(len(M2)):
        M3[i][k] = M1[i][k] + M2[i][k]

#To Print the matrix
print("The sum of Matrix M1 and M2 = ", M3)

출력:

The sum of Matrix M1 and M2 =  [[11, 30, -12], [21, 14, 0], [-12, 6, 34]]

중첩 목록을 사용한 행렬의 곱셈

행렬을 곱하기 위해 아래 코드와 같이 두 행렬에 대해 for 루프를 사용할 수 있습니다.

M1 = [[8, 14, -6], 
      [12,7,4], 
      [-11,3,21]]

M2 = [[3, 16, -6],
           [9,7,-4], 
           [-1,3,13]]

M3  = [[0,0,0],
       [0,0,0],
       [0,0,0]]

matrix_length = len(M1)

#To Multiply M1 and M2 matrices
for i in range(len(M1)):
for k in range(len(M2)):
        M3[i][k] = M1[i][k] * M2[i][k]

#To Print the matrix
print("The multiplication of Matrix M1 and M2 = ", M3)

출력:

The multiplication of Matrix M1 and M2 =  [[24, 224, 36], [108, 49, -16], [11, 9, 273]]

Python Numpy 패키지의 배열을 사용하여 Python 매트릭스 만들기

파이썬 라이브러리 Numpy는 배열을 다루는 데 도움이 됩니다. Numpy는 목록에 비해 배열을 조금 더 빠르게 처리합니다.

Numpy를 사용하려면 먼저 Numpy를 설치해야 합니다. Numpy를 설치하려면 아래 단계를 따르세요.

1단계)

Numpy를 설치하는 명령은 다음과 같습니다.

pip install NumPy

2단계)

코드에서 Numpy를 사용하려면 가져와야 합니다.

import NumPy

3단계)

아래와 같이 별칭을 사용하여 Numpy를 가져올 수도 있습니다.

import NumPy as np

Numpy의 array() 메서드를 사용하여 파이썬 행렬을 만들 것입니다.

예:Python Matrix를 생성하기 위한 Numpy의 배열

import numpy as np
M1 = np.array([[5, -10, 15], [3, -6, 9], [-4, 8, 12]])
print(M1)

출력:

[[  5 -10  15]
 [  3  -6   9]
 [ -4   8  12]]

Numpy.Array()를 사용한 행렬 연산

수행할 수 있는 행렬 연산은 덧셈, 뺄셈, 곱셈, 전치, 행렬의 행, 열 읽기, 행렬 슬라이싱 등입니다. 모든 예제에서 array() 메서드를 사용할 것입니다.

행렬 추가

행렬에 덧셈을 수행하기 위해 numpy.array()를 사용하여 두 개의 행렬을 만들고 (+) 연산자를 사용하여 추가합니다.

예:

import numpy as np

M1 = np.array([[3, 6, 9], [5, -10, 15], [-7, 14, 21]])
M2 = np.array([[9, -18, 27], [11, 22, 33], [13, -26, 39]])
M3 = M1 + M2  
print(M3)

출력:

[[ 12 -12  36]
 [ 16  12  48]
 [  6 -12  60]]

행렬 빼기

행렬에서 빼기를 수행하기 위해 numpy.array()를 사용하여 두 개의 행렬을 만들고 (-) 연산자를 사용하여 뺍니다.

예:

import numpy as np

M1 = np.array([[3, 6, 9], [5, -10, 15], [-7, 14, 21]])
M2 = np.array([[9, -18, 27], [11, 22, 33], [13, -26, 39]])
M3 = M1 - M2  
print(M3)

출력:

[[ -6  24 -18]
 [ -6 -32 -18]
 [-20  40 -18]]

행렬 곱하기

먼저 numpy.arary()를 사용하여 두 개의 행렬을 만듭니다. 그것들을 곱하기 위해 numpy dot() 메소드를 사용할 수 있습니다. Numpy.dot()는 행렬 M1과 M2의 내적입니다. Numpy.dot()는 2D 배열을 처리하고 행렬 곱셈을 수행합니다.

예:

import numpy as np

M1 = np.array([[3, 6], [5, -10]])
M2 = np.array([[9, -18], [11, 22]])
M3 = M1.dot(M2)  
print(M3)

출력:

[[  93   78]
 [ -65 -310]]

행렬 전치

행렬의 전치는 행을 열로, 열을 행으로 변경하여 계산됩니다. Numpy의 transpose() 함수를 사용하여 행렬의 전치를 계산할 수 있습니다.

예:

import numpy as np

M1 = np.array([[3, 6, 9], [5, -10, 15], [4,8,12]])
M2 = M1.transpose()

print(M2)

출력:

[[  3   5   4]
 [  6 -10   8]
 [  9  15  12]]

행렬 분할

슬라이싱은 주어진 시작/종료 인덱스를 기반으로 매트릭스에서 요소를 반환합니다.

행렬에서 슬라이스 작업을 하기 전에 먼저 간단한 배열에 슬라이스를 적용하는 방법을 이해하겠습니다.

import numpy as np

arr = np.array([2,4,6,8,10,12,14,16])
print(arr[3:6]) # will print the elements from 3 to 5
print(arr[:5]) # will print the elements from 0 to 4
print(arr[2:]) # will print the elements from 2 to length of the array.
print(arr[-5:-1]) # will print from the end i.e. -5 to -2
print(arr[:-1]) # will print from end i.e. 0 to -2

출력:

[ 8 10 12]
[ 2  4  6  8 10]
[ 6  8 10 12 14 16]
[ 8 10 12 14]
[ 2  4  6  8 10 12 14]

이제 행렬에 슬라이싱을 구현해 보겠습니다. 매트릭스에서 슬라이싱을 수행하려면

구문은 M1[row_start:row_end, col_start:col_end]

입니다.

우리가 사용할 행렬 M1은 다음과 같습니다.

M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])

총 4개의 행이 있습니다. 인덱스는 0에서 3까지 시작합니다. 0 번째 행은 [2,4,6,8,10], 1 st 입니다. 행은 [3,6,9,-12,-15] 다음에 2 nd 가 옵니다. 및 3 번째 .

행렬 M1에는 5개의 열이 있습니다. 인덱스는 0에서 4까지 시작합니다. 0 번째 열에 [2,3,4,5], 1 st 값이 있습니다. 열에는 [4,6,8,-10] 값과 2 nd 값이 있습니다. , 3 번째 , 4 , 5 .

다음은 슬라이싱을 사용하여 행렬에서 행과 열 데이터를 가져오는 방법을 보여주는 예입니다. 이 예에서는 1 st 를 인쇄하고 있습니다. 그리고 2 nd 행, 열의 경우 첫 번째, 두 번째 및 세 번째 열이 필요합니다. 그 출력을 얻기 위해 우리는 다음을 사용했습니다:M1[1:3, 1:4]

예:

import numpy as np

M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])


print(M1[1:3, 1:4]) # For 1:3, it will give first and second row.
#The columns will be taken from first to third.

출력:

[[  6   9 -12]
 [  8  12  16]]

예:모든 행과 세 번째 열을 인쇄하려면

import numpy as np
M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])

print(M1[:,3]) # This will print all rows and the third column data.

출력:

[  8 -12  16 -20]

예:첫 번째 행과 모든 열을 인쇄하려면

import numpy as np

M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])
print(M1[:1,]) # This will print first row and all columns

출력:

[[ 2  4  6  8 10]]

예:처음 세 행과 처음 두 열을 인쇄하려면

import numpy as np

M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])


print(M1[:3,:2])

출력:

[[2 4]
 [3 6]
 [4 8]]

넘파이 매트릭스 액세스

우리는 슬라이싱이 어떻게 작동하는지 보았습니다. 이를 고려하여 행렬에서 행과 열을 가져오는 방법을 알아보겠습니다.

행렬을 인쇄하려면

예제에서는 행렬의 행을 인쇄합니다.

예:

import numpy as np
M1 = np.array([[3, 6, 9], [5, -10, 15], [4,8,12]])
print(M1[0])  #first row
print(M1[1]) # the second row
print(M1[-1]) # -1 will print the last row

출력:

[3 6 9]
[  5 -10  15]
[ 4  8 12]

마지막 행을 얻으려면 인덱스 또는 -1을 사용할 수 있습니다. 예를 들어, 행렬에는 3개의 행이 있습니다.

따라서 M1[0]은 첫 번째 행을 제공합니다.

M1[1]이(가) 두 번째 행을 줄 것입니다.

M1[2] 또는 M1[-1]은 세 번째 행 또는 마지막 행을 제공합니다.

행렬의 열을 인쇄하려면

import numpy as np
M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])
print(M1[:,0]) # Will print the first Column
print(M1[:,3]) # Will  print the third Column
print(M1[:,-1]) # -1 will give you the last column

출력:

[2 3 4 5]
[  8 -12  16 -20]
[ 10 -15 -20  25]

요약:


python

  1. 파이썬 사전
  2. C++의 배열 | 선언 | 초기화 | 배열 예제에 대한 포인터
  3. Python Print() 문:예제로 인쇄하는 방법
  4. 예제가 있는 Python 문자열 count()
  5. Python String format() 예제로 설명
  6. 예제가 있는 Python 문자열 find() 메서드
  7. 예제가 있는 Python Lambda 함수
  8. Python abs() 함수:절대값 예제
  9. 예제가 있는 Python round() 함수
  10. Python range() 함수:Float, List, For 루프 예제