NumPy를 활용한 선형대수
연립방정식을 풀기 위해 np.dot, np.linalg.inv, np.linalg.eig, np.linalg.solve를 사용합니다.
NumPy를 활용한 선형대수은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
NumPy의 선형 대수
NumPy는 @ 연산자와 np.linalg 모듈을 통해 행렬 연산을 제공합니다. 이는 거의 모든 머신 러닝 알고리즘의 기반입니다.
@를 사용한 행렬 곱셈
@ 연산자는 실제 행렬 곱셈을 수행합니다. 안쪽 차원의 크기가 일치해야 하므로 (m,k) @ (k,n)의 결과는 (m,n)이 됩니다.
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(A @ B)
# [[19 22]
# [43 50]]@와 * 비교(중요)
*는 요소별 연산이고 @는 행렬 곱셈입니다. 둘을 혼동하는 것은 매우 흔한 오류입니다.
print(A * B) # element-wise: [[ 5 12]
# [21 32]]
print(A @ B) # matrix product (different result)np.dot
np.dot은 함수 형태입니다. 2차원 배열에서는 @과 같고, 1차원 배열에서는 내적(스칼라)을 계산합니다.
u = np.array([1, 2, 3])
v = np.array([4, 5, 6])
print(np.dot(u, v)) # 1*4 + 2*5 + 3*6 = 32역행렬
np.linalg.inv(A)는 A와 곱했을 때 단위 행렬을 만드는 행렬인 역행렬을 반환합니다. 정사각형이면서 비특이인 행렬만 역행렬을 가집니다.
A = np.array([[4.0, 7.0], [2.0, 6.0]])
Ainv = np.linalg.inv(A)
print(np.round(A @ Ainv, 6)) # identity행렬식
np.linalg.det(A)는 행렬식을 반환합니다. 행렬식이 0이면 행렬이 특이하여 역행렬을 구할 수 없습니다.
print(np.linalg.det(A)) # 10.0 (nonzero -> invertible)선형 시스템 풀기
A x = b를 풀 때는 역행렬을 계산하는 대신 np.linalg.solve(A, b)를 사용하는 것이 좋습니다. 더 빠르고 수치적으로 안정적입니다.
A = np.array([[3.0, 1.0], [1.0, 2.0]])
b = np.array([9.0, 8.0])
x = np.linalg.solve(A, b)
print(x) # [2. 3.]inv보다 solve를 사용하는 이유
inv(A) @ b를 계산하면 불필요한 작업이 발생하고 반올림 오차가 증폭됩니다. solve는 LU 분해를 직접 사용합니다. 실제 코드에서는 solve를 사용하세요.
# Avoid: x = np.linalg.inv(A) @ b
# Prefer: x = np.linalg.solve(A, b)고윳값과 고유벡터
np.linalg.eig(A)는 고윳값과 고유벡터를 반환합니다. 이는 PCA, 안정성 분석 등의 기반이 됩니다.
A = np.array([[2.0, 0.0], [0.0, 3.0]])
vals, vecs = np.linalg.eig(A)
print(vals) # [2. 3.]벡터와 행렬의 노름
np.linalg.norm은 크기를 측정합니다. 기본적으로 벡터에는 유클리드(L2) 노름이 사용되며, 거리 계산부터 규제까지 다양한 곳에서 활용됩니다.
v = np.array([3.0, 4.0])
print(np.linalg.norm(v)) # 5.0 (sqrt(9+16))
print(np.linalg.norm(v, 1)) # 7.0 (L1 norm)전치
A.T는 행과 열을 바꾸어 행렬을 전치합니다. 정규방정식과 같은 수식에 끊임없이 등장합니다.
A = np.array([[1, 2, 3], [4, 5, 6]])
print(A.T)
# [[1 4]
# [2 5]
# [3 6]]빠른 확인
선형 대수에 대한 기억을 확인해 보세요.
복습
선형 대수 도구 모음:
- 행렬과 내적에는
@/np.dot사용(*는 사용하지 않음) np.linalg.inv,np.linalg.det- 역행렬을 구하는 것보다
np.linalg.solve(A, b)가 더 좋습니다 - 고유 분해에는
np.linalg.eig사용 - 크기 계산에는
np.linalg.norm, 전치에는A.T사용
자주 묻는 질문
“NumPy를 활용한 선형대수” 강의는 무료인가요?
네 — “NumPy를 활용한 선형대수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“NumPy를 활용한 선형대수”에서 뭘 배우나요?
연립방정식을 풀기 위해 np.dot, np.linalg.inv, np.linalg.eig, np.linalg.solve를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“NumPy를 활용한 선형대수” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 배열 생성 및 속성
- 인덱싱, 슬라이싱, 고급 인덱싱
- 브로드캐스팅과 벡터화 연산
- NumPy를 활용한 선형대수