반응형
NumPy 소개
NumPy(넘파이)는 Numerical Python의 약자로, 파이썬에서 수치 계산을 수행할 때 가장 많이 사용되는 라이브러리 중 하나입니다. 특히, **다차원 배열(array)**과 선형 대수 연산, 고속 연산을 지원하여 데이터 과학, 머신러닝, 과학 계산 등에 널리 활용됩니다.
1. NumPy의 특징
✅ 다차원 배열 지원
✅ 빠른 연산 속도 (C로 구현되어 있어서 파이썬 리스트보다 훨씬 빠름)
✅ 벡터 연산 및 행렬 연산 지원
✅ 다양한 수학 및 통계 함수 내장
✅ 메모리 효율적인 데이터 처리 가능
2. NumPy 설치 및 가져오기
NumPy가 설치되어 있지 않다면 먼저 설치해야 합니다.
pip install numpy
이후 파이썬 코드에서 numpy를 가져올 수 있습니다.
import numpy as np
3. NumPy 배열 (ndarray) 생성
NumPy의 핵심은 ndarray(N-dimensional array, 다차원 배열) 입니다.
(1) 리스트로부터 배열 생성
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
print(type(arr)) # <class 'numpy.ndarray'>
(2) 다차원 배열 생성
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d)
출력:
[[1 2 3]
[4 5 6]]
(3) 특정 값으로 배열 생성
np.zeros((2, 3)) # 2x3 배열, 모든 요소 0
np.ones((3, 3)) # 3x3 배열, 모든 요소 1
np.full((2, 2), 7) # 2x2 배열, 모든 요소 7
np.eye(3) # 3x3 단위 행렬 (Identity Matrix)
(4) 연속적인 숫자로 배열 생성
np.arange(1, 10, 2) # [1 3 5 7 9] (1부터 10 전까지, 2씩 증가)
np.linspace(0, 10, 5) # [ 0. 2.5 5. 7.5 10.] (0~10 사이 5개 숫자 균등 분포)
4. 배열 속성 조회
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape) # (2, 3) (2행 3열)
print(arr.ndim) # 2 (차원의 개수)
print(arr.size) # 6 (전체 요소 개수)
print(arr.dtype) # int32 또는 int64 (데이터 타입)
5. 배열 연산 (벡터 연산)
NumPy는 기본적으로 벡터 연산을 지원하여 매우 빠른 계산이 가능합니다.
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] (요소별 나눗셈)
print(a ** 2) # [1 4 9] (요소별 제곱)
행렬 곱 연산 (dot product)
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(np.dot(A, B))
출력:
[[19 22]
[43 50]]
6. 인덱싱과 슬라이싱
(1) 1차원 배열 인덱싱
arr = np.array([10, 20, 30, 40, 50])
print(arr[0]) # 10
print(arr[-1]) # 50
(2) 2차원 배열 인덱싱
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d[0, 1]) # 2 (0번째 행, 1번째 열)
(3) 배열 슬라이싱
arr = np.array([10, 20, 30, 40, 50])
print(arr[1:4]) # [20 30 40]
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d[:, 1]) # 모든 행에서 1열의 값 추출 => [2 5]
7. 유용한 NumPy 함수
(1) 랜덤 값 생성
np.random.rand(3, 3) # 0~1 사이의 난수 (3x3 배열)
np.random.randint(1, 100, (2, 3)) # 1~100 사이의 정수 난수 (2x3 배열)
(2) 최소, 최대, 평균, 합계
arr = np.array([1, 2, 3, 4, 5])
print(arr.min()) # 1
print(arr.max()) # 5
print(arr.sum()) # 15
print(arr.mean()) # 3.0
(3) 배열 재구성
arr = np.arange(1, 10) # [1 2 3 4 5 6 7 8 9]
arr = arr.reshape(3, 3) # 3x3 배열로 변경
print(arr)
8. 실습 문제
문제 1: NumPy 배열 생성
- 1부터 20까지의 숫자로 구성된 1차원 배열을 생성하세요.
- 위 배열을 4x5의 2차원 배열로 변환하세요.
- 2차원 배열에서 3번째 행을 출력하세요.
문제 2: NumPy 연산
- np.arange(1, 10)로 만든 배열을 제곱한 결과를 출력하세요.
- 두 개의 3x3 랜덤 배열을 생성하고 행렬 곱을 계산하세요.
👉 답을 코드로 작성해보고 실행해보세요!
NumPy는 데이터 분석과 머신러닝에서 기본이 되는 라이브러리입니다. 기본적인 연산만 익혀도 많은 데이터 처리를 쉽게 할 수 있습니다. 더 깊이 공부하고 싶다면, 다양한 실습을 해보는 것이 중요합니다! 🚀
'십대를 위한 코딩 > 십대를 위한 파이썬' 카테고리의 다른 글
[1, 2] vs [1 2] 차이, 파이썬 리스트와 NumPy 배열 (0) | 2025.03.05 |
---|---|
실습 문제 풀이 (1) | 2025.03.04 |
Google Colab의 화면은 Jupyter Notebook과 JupyterLab 중 어느 쪽 (2) | 2025.03.03 |
Jupyter Notebook과 JupyterLab (1) | 2025.03.02 |
Windows에서 특정 폴더에서 Jupyter Notebook을 실행하는 방법 (0) | 2025.03.01 |