math
CHAPTER 36 / 45
읽기 약 2분
FUNCTION
행렬: 데이터 테이블의 수학
핵심 개념
행렬 = 2D 배열. 덧셈·곱셈·전치 — 이미지(픽셀)·DB 테이블·엑셀 시트의 수학적 표현.
본문
행렬 = 행 × 열
A = [[1, 2, 3],
[4, 5, 6]]
형태: 2 × 3 (2행 3열)
원소: A[i][j] (i=행, j=열)
A[0][0] = 1, A[1][2] = 6numpy 행렬
import numpy as np
A = np.array([[1, 2, 3],
[4, 5, 6]])
B = np.array([[7, 8, 9],
[1, 2, 3]])
print(A.shape) # (2, 3)
print(A.size) # 6 (총 원소 수)
# 덧셈 — 같은 형태만
print(A + B)
# [[8 10 12]
# [5 7 9]]
# 스칼라 곱
print(A * 2)
# [[2 4 6]
# [8 10 12]]
# 원소별 곱 (Hadamard product)
print(A * B)
# [[7 16 27]
# [4 10 18]]
# ⚠️ 이건 행렬 곱셈 아님 — 다음 챕터에서전치 행렬 (Transpose)
# 행과 열 뒤바꾸기 — A[i][j] → A[j][i]
A = np.array([[1, 2, 3],
[4, 5, 6]])
print(A.T)
# [[1 4]
# [2 5]
# [3 6]]
# 형태가 (2, 3) → (3, 2)
# 응용 — 데이터 가공
# 학생별 점수 (학생 행, 과목 열)
scores = np.array([
[80, 90, 70], # 학생 1
[85, 88, 95], # 학생 2
[70, 60, 75], # 학생 3
])
# 과목별 평균
print(scores.mean(axis=0)) # [78.3 79.3 80.0]
# 학생별 평균
print(scores.mean(axis=1)) # [80.0 89.3 68.3]
# 전치 후 — 과목 행, 학생 열
print(scores.T.shape) # (3, 3)실전 — 이미지 처리
# 이미지 = 픽셀 행렬 (그레이) 또는 3D 텐서 (RGB)
# 가상 8x8 그레이 이미지
import numpy as np
img = np.array([
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 1, 1, 1, 0, 0],
[0, 1, 1, 0, 0, 1, 1, 0],
[0, 1, 0, 0, 0, 0, 1, 0],
[0, 1, 0, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 0, 1, 1, 0],
[0, 0, 1, 1, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
]) * 255 # 0=검정, 255=흰색
# 좌우 반전 — 열 뒤집기
flipped = img[:, ::-1]
# 상하 반전 — 행 뒤집기
upside = img[::-1, :]
# 90도 회전 — 전치 + 좌우 반전
rotated = img.T[:, ::-1]
# 밝기 조절
brighter = np.clip(img + 50, 0, 255)
darker = np.clip(img - 50, 0, 255)
# 음화 (negative)
negative = 255 - img실전 — 엑셀/DB 테이블
import pandas as pd
# DataFrame은 강화된 행렬
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 28],
'salary': [50000, 60000, 55000],
})
print(df)
# name age salary
# 0 Alice 25 50000
# 1 Bob 30 60000
# 2 Charlie 28 55000
# 행렬처럼 슬라이싱
print(df.iloc[0:2, 1:3]) # 행 0~1, 열 1~2
# 통계 (행렬 연산)
print(df[['age', 'salary']].mean())
# age 27.67
# salary 55000.00
# 기본 행렬 변환
matrix = df[['age', 'salary']].values
print(matrix)
# [[ 25 50000]
# [ 30 60000]
# [ 28 55000]]단위 행렬과 영행렬
# 단위 행렬 (Identity Matrix) — 대각선 1, 나머지 0
I = np.eye(3)
print(I)
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]
# 행렬 곱 시 항등원 — A · I = A
# 영행렬 (Zero Matrix)
Z = np.zeros((2, 3))
print(Z)
# [[0. 0. 0.]
# [0. 0. 0.]]
# 1로 채운 행렬
O = np.ones((2, 3))
# 무작위 행렬
R = np.random.rand(3, 3) # 0~1 난수
N = np.random.randn(3, 3) # 표준 정규 분포다음 챕터
CH.37 "행렬 곱셈" — AI의 핵심 연산, 신경망의 본질.
AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude
무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6
내 데이터를 행렬로 표현하고 통계 분석 + 변환을 numpy로 실습하는 예제 5개를 만들어줘.
ChatGPT
무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro
한국 데이터 분석가의 행렬·DataFrame 실무 활용 패턴 5가지를 비교해줘.
Gemini
무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro
내 이미지/표 데이터에 행렬 변환을 적용한 실전 예제 + 자동화 스크립트를 만들어줘.
Grok
무료: Grok 4.1 / SuperGrok $30/mo
2026년 데이터 분석 도구 (pandas/Polars/DuckDB) 비교와 추천을 솔직히 알려줘.
⭐ 이것만 기억하세요
행렬: 데이터 테이블의 수학은 이 3가지만 확실히 잡으세요
1.행렬은 데이터 테이블의 수학적 표현 — 이미지·엑셀·DB 모두 행렬로 다룸
2.전치(.T)로 행과 열 뒤바꾸기 — 데이터 가공의 핵심 도구
3.다음 챕터 CH.37에서 행렬 곱셈 — AI/신경망의 핵심 연산
공유하기
진행도 36 / 45