0Pricing
Python Academy · 강의

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 ≈ A

np.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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. NumPy 배열과 dtypes
  2. 배열 연산과 브로드캐스팅
  3. 인덱싱, 슬라이싱 및 고급 인덱싱
  4. NumPy를 활용한 선형대수
← Python Academy(으)로 돌아가기