Python 행렬: 전치, 곱셈, NumPy 배열

⚡ 스마트 요약

A Python 행렬은 수학과 과학에서 사용되는 행과 열로 이루어진 2차원 데이터 배열입니다. 이 과정에서는 중첩 리스트와 NumPy를 이용하여 행렬을 생성하고, 덧셈, 곱셈, 전치, 슬라이싱 등의 연산을 수행하는 방법을 배웁니다.

  • 🔢 무엇이다 : 행렬은 행과 열로 이루어진 2차원 데이터 배열입니다.
  • 📋 중첩 목록: Python 행렬은 리스트의 리스트 형태로 구성할 수 있습니다.
  • 🧮 넘파이 배열: numpy.array()는 더 빠르고 풍부한 기능을 갖춘 행렬을 생성합니다.
  • Operations : 더하기, 빼기tract를 사용하고 연산자 또는 numpy.dot()을 사용하여 행렬을 곱합니다.
  • 🔄 전치 및 자르기: transpose() 함수는 행과 열을 바꾸고, slicing 함수는 부분 행렬을 선택합니다.
  • 🤖 AI 도움말: Copilot과 같은 AI 도구는 행렬 및 NumPy 코드를 즉시 생성합니다.

Python 매트릭스

Python 행렬?

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

어떻게 Python 행렬이 작동하나요?

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

Python 매트릭스

단계 1) 2×2 행렬을 보여줍니다. 행이 2개, 열이 1개입니다. 행렬 내부의 데이터는 숫자입니다. 행 2,3은 값 2, 4,5을 가지고 있고 행 1는 값 2,4, 2를 가지고 있습니다. 열, 즉 col3,5은 값 XNUMX, XNUMX를 가지고 있고 colXNUMX는 값 XNUMX, XNUMX를 가지고 있습니다.

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

마찬가지로, nxn 행렬 내부에 데이터를 저장할 수 있습니다. Python행렬에는 덧셈, 뺄셈, 빼기 등 다양한 연산을 수행할 수 있습니다.trac곱셈, 계산 등

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

Python 행렬은 배열을 사용하며 동일하게 구현될 수 있습니다.

  • 만들기 Python 중첩 목록 데이터 유형을 사용하는 행렬
  • 만들기 Python 배열을 사용하는 행렬 Python Numpy 패키지

만들기 Python 중첩 목록 데이터 유형을 사용하는 행렬

In Python, 배열은 리스트 데이터 유형을 사용하여 표현됩니다. 이제 리스트를 사용하여 파이썬 행렬을 만듭니다.

아래와 같이 3×3 행렬을 만듭니다.

만들기 Python 중첩 목록을 사용하는 행렬

  • 행렬에는 3개의 행과 3개의 열이 있습니다.
  • 목록 형식의 첫 번째 행은 다음과 같습니다: [8,14,-6]
  • 목록의 두 번째 행은 다음과 같습니다: [12,7,4]
  • 목록의 세 번째 행은 다음과 같습니다: [-11,3,21]

모든 행과 열이 포함된 목록 내부의 행렬은 아래와 같습니다.

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

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

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

내부의 데이터를 읽으려면 Python 목록을 사용하는 행렬.

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

예: 매트릭스를 인쇄하려면

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 배열을 사용하는 행렬 Python Numpy 패키지

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

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

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

pip install NumPy

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

import NumPy

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

import NumPy as np

Numpy의 array() 메소드를 사용하여 Python 행렬을 만들겠습니다.

예 : 생성할 Numpy의 배열 Python 매트릭스

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

매트릭스 OperaNumpy.Array()를 사용하는 방법

행렬에서 수행할 수 있는 연산은 덧셈과 뺄셈입니다.trac행렬의 행과 열을 읽고, 행렬을 분할하는 등, 곱셈, 전치, 행렬의 행과 열 읽기 등 다양한 작업을 수행할 것입니다. 모든 예제에서 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]]

매트릭스 서브trac기

하위 작업을 수행하려면trac행렬에 대한 연산을 수행하기 위해 numpy.array()를 사용하여 두 개의 행렬을 생성하고 이를 하위 행렬로 변환합니다.trac(-) 연산자를 사용하여 t를 t합니다.

예:

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

매트릭스 슬라이싱

슬라이싱은 주어진 시작/끝 인덱스를 기반으로 행렬의 요소를 반환합니다.

  • 슬라이싱 구문은 – [start:end]입니다.
  • 시작 인덱스를 지정하지 않으면 0으로 간주합니다. 예를 들어 [:5]는 [0:5]를 의미합니다.
  • 끝이 전달되지 않으면 배열의 길이로 사용됩니다.
  • 시작/끝 값이 음수이면 배열의 끝에서부터 슬라이싱이 수행됩니다.

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

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 t는 다음과 같습니다.

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까지 시작합니다. 0th 행은 [2,4,6,8,10], 1입니다.st 행은 [3,6,9,-12,-15]이고 그 뒤에 2가 옵니다.nd 및 3rd.

행렬 M1에는 5개의 열이 있습니다. 인덱스는 0부터 4까지 시작합니다. 0th 열의 값은 [2,3,4,5], 1입니다.st 열의 값은 [4,6,8,-10]이고 그 뒤에 2가 있습니다.nd, 3rd, 4th, 5th.

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

예: 처음 2개 행과 처음 XNUMX개 열을 인쇄하려면

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

NumPy 매트릭스에 액세스하기

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

행렬의 행을 인쇄하려면

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

예:

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]

자주 묻는 질문

행렬은 행과 열로 배열된 2차원 직사각형 데이터 배열입니다. Python 내장된 행렬 형식이 없으므로 중첩 리스트 또는 NumPy 라이브러리를 사용해야 합니다.

[[8, 14, -6], [12, 7, 4]]와 같이 중첩 리스트 형태로 행렬을 생성하거나, 내장 연산을 지원하는 더 빠르고 강력한 행렬을 생성하려면 numpy.array()를 사용하세요.

NumPy는 일반 리스트보다 배열을 더 빠르게 처리하며, 덧셈, 내적, 전치, 슬라이싱과 같은 내장 행렬 연산을 제공하여 행렬 코드를 더 간결하고 효율적으로 만들어 줍니다.

진정한 행렬 곱셈을 위해서는 numpy.dot(M1, M2) 또는 M1.dot(M2)를 사용하십시오. NumPy 배열의 더하기 및 별표 연산자는 요소별 덧셈과 곱셈을 수행합니다.

NumPy 배열에 transpose() 메서드를 호출합니다(예: M1.transpose()). 이 메서드는 행과 열을 교환하므로 i번째 행의 j번째 열에 있는 요소가 j번째 행의 i번째 열로 이동합니다.

GitHub Copilot과 같은 AI 비서는 NumPy 배열 코드를 자동 완성하고, 내적 및 전치와 같은 행렬 연산을 생성하며, 코드를 작성하는 동안 슬라이싱 구문을 설명해 줍니다. Python.

네. AI 기반 도구는 NumPy 파이프라인 작성을 자동화하고, 반복문 대신 효율적인 벡터화 연산을 선택하며, 연립방정식 풀이와 같은 선형대수 작업을 위한 코드를 생성할 수 있습니다.

부분 행렬을 선택하려면 M1[row_start:row_end, col_start:col_end]를 사용하십시오. 시작 또는 끝을 생략하면 배열 경계가 사용되며, 음수 인덱스는 끝에서부터 계산됩니다.

이 게시물을 요약하면 다음과 같습니다.