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

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. 행렬에서는 덧셈, 뺄셈, 곱셈 등의 많은 연산을 할 수 있습니다.

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()를 사용하는 방법

수행할 수 있는 행렬 연산에는 덧셈, 뺄셈, 곱셈, 전치, 행렬의 행과 열 읽기, 행렬 슬라이싱 등이 있습니다. 모든 예제에서 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]]

매트릭스 슬라이싱

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

  • 슬라이싱 구문은 – [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]

제품 개요

  • A Python 행렬은 행과 열로 저장된 데이터의 특수화된 2차원 직사각형 배열입니다. 행렬의 데이터는 숫자, 문자열, 표현식, 기호 등일 수 있습니다. 행렬은 수학적 및 과학적 계산에 사용할 수 있는 중요한 데이터 구조 중 하나입니다.
  • Python 행렬 데이터 유형을 구현하는 간단한 방법이 없습니다. Python 행렬은 중첩된 목록 데이터 유형과 numpy 라이브러리를 사용하여 생성할 수 있습니다.
  • Python 라이브러리 Numpy는 배열을 처리하는 데 도움이 됩니다. Numpy는 목록에 비해 배열을 조금 더 빠르게 처리합니다.
  • 수행할 수 있는 행렬 연산에는 덧셈, 뺄셈, 곱셈, 전치, 행렬의 행과 열 읽기, 행렬을 슬라이싱하는 것 등이 있습니다.
  • 두 개의 행렬을 추가하려면 numpy.array()를 활용하고 (+) 연산자를 사용하여 두 행렬을 추가합니다.
  • 그것들을 곱하려면 numpy dot() 메소드를 사용할 수 있습니다. Numpy.dot()는 행렬 M1과 M2의 내적입니다. Numpy.dot()는 2D 배열을 처리하고 행렬 곱셈을 수행합니다.
  • 행렬의 전치는 행을 열로, 열을 행으로 변경하여 계산됩니다. Numpy의 transpose() 함수를 사용하여 행렬의 전치를 계산할 수 있습니다.
  • 행렬을 조각화하면 주어진 시작/끝 인덱스를 기반으로 요소가 반환됩니다.