0Pricing
Learn AI with Python · 강의

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

이 강의의 모든 강의

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