이패스코리아 신성진 김용재
# 📌 NumPy 기초 튜토리얼
# 1️⃣ NumPy 설치 및 불러오기
import numpy as np
# 2️⃣ 배열(Array) 생성하기
## ✅ 1차원 배열 생성
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)
print(type(arr1)) # <class 'numpy.ndarray'>
## ✅ 2차원 배열(행렬) 생성
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
# 3️⃣ 배열 속성 확인
print("배열 크기:", arr2.shape) # (행, 열) 형태 반환
print("배열 차원:", arr2.ndim) # 배열 차원(1D, 2D, 3D 등)
print("배열 요소 개수:", arr2.size) # 배열 내 총 요소 개수
print("배열 데이터 타입:", arr2.dtype) # 배열 요소의 데이터 타입
# 4️⃣ 특정 값으로 배열 생성
## ✅ 0으로 채운 배열
zeros = np.zeros((3, 3)) # 3x3 크기의 0 행렬
print(zeros)
## ✅ 1로 채운 배열
ones = np.ones((2, 4)) # 2x4 크기의 1 행렬
print(ones)
## ✅ 특정 숫자로 채운 배열
full = np.full((2, 2), 7) # 2x2 크기의 7로 채운 배열
print(full)
# 5️⃣ 범위 및 랜덤 값 생성
## ✅ 특정 범위의 숫자 배열
arr = np.arange(1, 10, 2) # 1부터 9까지 2씩 증가하는 숫자 배열
print(arr) # [1 3 5 7 9]
## ✅ 특정 범위의 값 균등 분할
arr = np.linspace(0, 10, 5) # 0부터 10까지 5개의 값으로 나눔
print(arr) # [ 0. 2.5 5. 7.5 10. ]
## ✅ 랜덤 값 생성
rand_arr = np.random.rand(3, 3) # 0~1 사이의 난수를 가지는 3x3 배열
print(rand_arr)
# 6️⃣ 배열 연산
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print("덧셈:", a + b) # [5 7 9]
print("뺄셈:", a - b) # [-3 -3 -3]
print("곱셈:", a * b) # [ 4 10 18]
print("나눗셈:", a / b) # [0.25 0.4 0.5 ]
## ✅ 행렬 곱 (dot product)
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
dot_product = np.dot(A, B) # 행렬 곱 수행
print(dot_product)
# 7️⃣ 배열 인덱싱과 슬라이싱
## ✅ 1차원 배열 인덱싱
arr = np.array([10, 20, 30, 40, 50])
print(arr[0]) # 10
print(arr[-1]) # 50
## ✅ 2차원 배열 인덱싱
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2[0, 1]) # 첫 번째 행, 두 번째 열 (값: 2)
## ✅ 슬라이싱
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7])
print(arr[2:5]) # 2번째부터 4번째까지 (2,3,4)
print(arr[:4]) # 처음부터 3번째까지 (0,1,2,3)
print(arr[::2]) # 2칸씩 건너뛰기 (0,2,4,6)
# 8️⃣ 배열 변환 및 정렬
## ✅ 배열 모양 변경 (reshape)
arr = np.array([[1, 2, 3], [4, 5, 6]])
reshaped = arr.reshape(3, 2) # (3행, 2열) 형태로 변경
print(reshaped)
## ✅ 배열 정렬
arr = np.array([3, 1, 4, 5, 2])
sorted_arr = np.sort(arr) # 오름차순 정렬
print(sorted_arr) # [1 2 3 4 5]
# 9️⃣ 기본 통계 함수
arr = np.array([1, 2, 3, 4, 5])
print("합계:", np.sum(arr)) # 15
print("최소값:", np.min(arr)) # 1
print("최대값:", np.max(arr)) # 5
print("평균:", np.mean(arr)) # 3.0
print("중앙값:", np.median(arr)) # 3.0
print("표준편차:", np.std(arr)) # 1.414
# 🔟 NumPy 활용 – 머신러닝 데이터 준비
## ✅ 데이터 정규화 (Min-Max Scaling)
arr = np.array([10, 20, 30, 40, 50])
normalized = (arr - np.min(arr)) / (np.max(arr) - np.min(arr))
print(normalized) # [0. 0.25 0.5 0.75 1. ]
## ✅ 결측치 처리 (NaN 값 대체)
arr = np.array([1, 2, np.nan, 4, 5])
arr = np.nan_to_num(arr, nan=np.mean(arr[np.logical_not(np.isnan(arr))])) # NaN을 평균으로 대체
print(arr)
# 🎯 마무리
# 이제 NumPy의 기본 개념과 활용법을 익혔습니다!
# 머신러닝, 데이터 분석에서 자주 사용되므로 실습을 반복해보세요 🚀
'파이썬' 카테고리의 다른 글
6. 데이터 전처리 (결측치와 이상치) (0) | 2025.03.17 |
---|---|
5. 데이터선택하기 (0) | 2025.03.17 |
4. 데이터불러오기 및 저장하기 (0) | 2025.03.17 |
3. 파이썬 자료형 튜토리얼 (0) | 2025.03.17 |
2. Pandas 기본 문법 튜토리얼 (0) | 2025.03.17 |