NumPy를 활용한 선형대수
행렬 곱셈과 분해를 수행하고 연립 선형 방정식을 풉니다.
NumPy를 활용한 선형대수은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
np.dot과 @
행렬 곱셈에는 np.dot(A, B) 또는 @ 연산자를 사용합니다(Python 3.5 이상).
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(np.dot(A, B)) # same result요소별 곱셈과 행렬 곱셈
*는 요소별 곱셈(아다마르 곱)이고, @는 행렬 곱셈입니다. 두 연산을 혼동하지 마세요.
import numpy as np
A = np.array([[1,2],[3,4]])
B = np.array([[2,0],[1,3]])
print(A * B) # [[ 2 0] [ 3 12]] — element-wise
print(A @ B) # [[ 4 6] [10 12]] — matrix multiply전치
arr.T는 배열을 전치합니다(행과 열을 바꿈). 더 높은 차원에서는 np.transpose(arr, axes)를 사용합니다.
import numpy as np
A = np.array([[1,2,3],[4,5,6]])
print(A.shape) # (2, 3)
print(A.T.shape) # (3, 2)
print(A.T)np.linalg.inv와 np.linalg.det
행렬의 역행렬과 행렬식을 계산합니다.
import numpy as np
A = np.array([[2.,1.],[1.,3.]])
print(np.linalg.inv(A))
# [[ 0.6 -0.2]
# [-0.2 0.4]]
print(np.linalg.det(A)) # 5.0선형 시스템 풀기
np.linalg.solve(A, b)는 LU 분해를 사용하여 Ax = b를 효율적으로 풉니다.
import numpy as np
# Solve: 2x + y = 5; x + 3y = 10
A = np.array([[2.,1.],[1.,3.]])
b = np.array([5.,10.])
x = np.linalg.solve(A, b)
print(x) # [1. 3.] → x=1, y=3고유값과 고유벡터
np.linalg.eig(A)는 고유값과 고유벡터를 반환합니다. 대칭 행렬에는 더 빠르고 안정적인 np.linalg.eigh를 사용합니다.
import numpy as np
A = np.array([[4., 2.], [1., 3.]])
vals, vecs = np.linalg.eig(A)
print("Eigenvalues:", vals) # [5. 2.]
print("Eigenvectors:\n", vecs)SVD: 특이값 분해
np.linalg.svd(A)는 A를 U, 시그마, Vt로 분해합니다. 차원 축소(PCA)와 의사 역행렬 계산에 사용됩니다.
import numpy as np
A = np.array([[1,2],[3,4],[5,6]], dtype=float)
U, s, Vt = np.linalg.svd(A, full_matrices=False)
print("Singular values:", s)
# Reconstruct: U @ np.diag(s) @ Vt ≈ Anp.linalg.norm
벡터와 행렬의 노름을 계산합니다.
import numpy as np
v = np.array([3., 4.])
print(np.linalg.norm(v)) # 5.0 (Euclidean)
print(np.linalg.norm(v, ord=1)) # 7.0 (Manhattan)
A = np.eye(3)
print(np.linalg.norm(A, "fro")) # 1.732 (Frobenius)외적과 외부적
3차원 외적에는 np.cross(a, b)를 사용하고, 외부적에는 np.outer(a, b)를 사용합니다.
import numpy as np
a = np.array([1,0,0])
b = np.array([0,1,0])
print(np.cross(a, b)) # [0 0 1]
print(np.outer([1,2,3], [4,5]))
# [[ 4 5]
# [ 8 10]
# [12 15]]np.linalg.lstsq
방정식이 미지수보다 많은 과결정 시스템의 최소제곱 해를 구합니다.
import numpy as np
# Fit y = ax + b to noisy data
X = np.column_stack([np.arange(5), np.ones(5)])
y = np.array([1.1, 2.0, 3.1, 3.9, 5.2])
coeffs, _, _, _ = np.linalg.lstsq(X, y, rcond=None)
print(f"slope={coeffs[0]:.2f}, intercept={coeffs[1]:.2f}")np.einsum
np.einsum은 아인슈타인 합산 표기법을 사용하여 임의의 텐서 축약을 표현합니다. 복잡한 선형 대수 연산에 매우 유연합니다.
import numpy as np
A = np.random.rand(3, 4)
B = np.random.rand(4, 5)
# Matrix multiplication via einsum:
C = np.einsum("ij,jk->ik", A, B)
print(C.shape) # (3, 5)
# Trace:
M = np.eye(4)
print(np.einsum("ii->", M)) # 4.0빠른 확인
NumPy(Python 3.5 이상)에서 행렬 곱셈을 수행하는 연산자는 무엇인가요?
복습
행렬 곱셈에는 @를, 선형 시스템에는 np.linalg.solve를, 고유값에는 np.linalg.eig를, 분해에는 np.linalg.svd를 사용합니다. np.einsum은 임의의 텐서 축약을 처리합니다.
자주 묻는 질문
“NumPy를 활용한 선형대수” 강의는 무료인가요?
네 — “NumPy를 활용한 선형대수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“NumPy를 활용한 선형대수”에서 뭘 배우나요?
행렬 곱셈과 분해를 수행하고 연립 선형 방정식을 풉니다. 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Python Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“NumPy를 활용한 선형대수” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- NumPy 배열과 dtypes
- 배열 연산과 브로드캐스팅
- 인덱싱, 슬라이싱 및 고급 인덱싱
- NumPy를 활용한 선형대수