파이썬 numpy로 선형대수 학습 준비

파이썬 numpy로 선형대수 학습 준비

가장 빠르게 습득하는 방법은 직접 해보는 것입니다. 이번 포스팅에서는 파이썬의 수학전용 라이브러리인 numpy로 벡터와 행렬을 다루는 선형대수 학습을 준비해보겠습니다. 행렬 형태를 바꾸는 transpose(), flatten() 함수와 벡터의 내적, 행렬의 곱을 구하는 dot() 함수 사용법이 핵심입니다.


글의 순서

넘파이로 행렬 형태 바꾸기
numpy 행렬 계산
넘파이로 두 벡터의 내적 구하기
numpy로 간단하게 계산하는 행렬 곱


넘파이로 행렬 형태 바꾸기

전치행렬은 행과 열의 순서를 서로 바꾼 행렬입니다. 전치행렬을 만들기 위해 넘파이의 T나 transpose() 함수를 사용합니다. 행렬의 행를 이어붙여서 벡터로 만드는 flatten()이란 함수도 있습니다. 실습코드01에서 전치행렬과 행렬의 행을 이어 붙여서 벡터로 만든 모양을 눈으로 확인해 보시기 바랍니다.



numpy로 행렬 형태 바꾸기

전치행렬은 행과 열의 순서를 서로 바꾼 행렬입니다. 전치행렬을 만들기 위해 넘파이의 T나 transpose() 함수를 사용합니다. 행렬의 행를 이어붙여서 벡터로 만드는 flatten()이란 함수도 있습니다. 실습코드01에서 전치행렬과 행렬의 행을 이어 붙여서 벡터로 만든 모양을 눈으로 확인해 보시기 바랍니다.


numpy 행렬 계산 : 행렬원소끼리 계산

행렬의 크기가 같을 경우 사칙연산을 할 수 있습니다. 이때는 행렬의 각 원소들끼리 계산합니다. 실습코드02에 나타내었습니다.


numpy로 두 벡터의 내적 구하기

두 벡터의 각 원소들을 서로 곱한 후 더한 값을 내적이라고 합니다. 내적은 두 벡터의 크기가 같을 때 구할 수 있습니다. 두 벡터를 내적하면 하나의 값이 나오는데 이를 스칼라(scalar)라고 부릅니다. 실습코드03에서 dot() 함수를 사용해서 두 벡터를 내적하는 방법을 확인하실 수 있습니다.

va 벡터의 원소는 1, 2, 3이고, vb 벡터의 원소는 2,, 3, 4이므로 두 벡터의 내적은 1*2 + 2*3 + 3*4가 됩니다.


넘파이로 간단하게 계산하는 행렬 곱

실습코드01, 02에서 행렬 A는 행 개수가 2개이고, 열 개수가 3개입니다. 이를 2×3 행렬이라고 부릅니다. A가 m×k 행렬이고, B가 k×n 행렬이라면, A, B 두 행렬을 곱할 수 있는데요. 이렇게 곱해진 행렬을 C 행렬이라고 한다면, C행렬의 크기는 m×n이 됩니다. A행렬의 열 개수와 B행렬의 행 개수가 같을 때만 행렬끼리 곱할 수 있다는 사실을 기억해 두시기 바랍니다.

실습코드04에 두 행렬을 곱하는 방법을 나타내었습니다. 벡터의 곱에서와 마찬가지로 dot() 함수를 사용합니다. 실습코드04에서는 행렬의 곱을 이해하기 쉽도록 A, B 두 행렬의 크기를 작게 만들었습니다. A는 2×2 행렬이고, B는 2×1 행렬이니까, 두 행렬의 곱은 2×1 행렬이 됩니다. 2×1 행렬인 B는 벡터이므로 array() 함수의 인자로 [2,3]이라는 리스트를 넘겼습니다. [[2,3]]이 아니라 말입니다. 행렬 A를 만드는 방법과 비교해서 차이점을 확인할 필요가 있습니다.


마치며 …

가장 빠르게 습득하는 방법은 직접 해보는 것입니다. 이번 포스팅에서는 파이썬의 수학전용 라이브러리인 numpy로 벡터와 행렬을 다루는 선형대수에 입문했습니다. 행렬 형태를 바꾸는 transpose(), flatten() 함수와 벡터의 내적, 행렬의 곱을 구하는 dot() 함수 사용법이 핵심입니다. 특히 머신러닝, 딥러닝, 인공지능을 만드는데는 수없이 많은 행렬곱이 필요하므로, 넘파이의 dot() 함수는 핵심중의 핵심이라고 할 수 있습니다. 아래를 꼭 기억해 주시기 바랍니다.

A가 m×k 행렬이고, B가 k×n 행렬이라면, A, B 두 행렬을 곱한 행렬 C의 크기는 m×n이 됩니다. A행렬의 열 개수와 B행렬의 행 개수가 같을 때만 행렬끼리 곱할 수 있습니다.

 

 

함께 참고하면 더 좋은 글 :
파이썬 반복문 속도를 빠르게 하는 방법 : python for 문과 timeit()
파이썬 넘파이 시작하기
파이썬 바이낸스 API로 비트코인 투자 백테스팅 : 일중 강도(II) 매매 전략
파이썬 프로그래밍 시작 (6) 반복문
파이썬 프로그래밍 시작 (7) 반복문과 무한루프
파이썬 데이터 분석! 데이터 분석을 위한 코딩언어 파이썬
파이썬 IDE 설정. 비주얼 스튜디오 코드(Visual Studio Code, VS code)
파이썬 프로그래밍 시작하기 (1) 온라인 프로그래밍 환경 리플릿(replit)


참고자료

[1] 김동권. (2016). 파이썬 소개 Ⅵ(Numpy). 설비저널, 45(4), 110-113.
[2] 김황후(2020), 파이썬 증권 데이터 분석, 한빛미디어
쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

Leave a Comment