NumPy란?
다차원 행렬과 연산을 지원하며 수학적 연산을 빠르게 수행하도록 설계된 라이브러리
리스트 vs NumPy
| 항목 | 리스트 | NumPy |
| 속도 | 느림 | 빠름 |
| 메모리 사용 | 사용량 높음 | 비교적 낮음 |
| 데이터 형식 | 여러 자료형 혼합 | 동일한 하나의 자료형만 허용 |
| 연산 방식 | 반복문 등 외부 문법 필요 | 벡터화된 연산 지원 |
※ NumPy는 기본적으로 대량의 데이터를 다루는 데에 특화되어 있음
배열 생성 및 배열 상태 확인
import numpy as np
arr = np.array([2025, 9, 8, 18, 21])
print(arr.shape) # 형태
print(arr.ndim) # 깊이(차원)
print(arr.size) # 요소 개수
print(arr.dtype) # 요소의 데이터 타입

⚠️ 주의
1차원 배열은 (5, )와 같이 [차수] 없이 [요소의 개수]만 출력됨
(1, 5)라는 표기는 나오지 않음
arr_int = np.array([2025, 9, 8])
print(arr_int.dtype) # int64 (8byte)
arr_float = np.array([1.234, 3.456, 9.876])
print(arr_float.dtype) # float64
arr_bool = np.array([True, False, True, False])
print(arr_bool.dtype) # bool
arr_str = np.array(['hello', 'world', 'numpy-lib', 'great'])
print(arr_str.dtype) # <U9 : U(유니코드) + 요소 중 가장 긴 문자열 길이

특정 값으로 초기화된 배열
# zeros
arr_z = np.zeros((3, 3))
print(arr_z, arr_z.dtype)
# ones
arr_o = np.ones((5, 2))
print(arr_o, arr_o.dtype)
# full
arr_f = np.full((4, 2), 7)
print(arr_f, arr_f.dtype)
임의의 특정 배열과 같은 형태(like)로 새 배열 생성
# 원본 행렬을 넣고 '그와 같은 형태'로 생성하기
arr = np.array([[10, 20], [30, 40]])
print(arr.shape)
# zeros_like
print(np.zeros_like(arr))
# ones_like
print(np.ones_like(arr))
# full_like
print(np.full_like(arr, 9))
수열 생성
- arange : 특정 범위 내 숫자들
- linspace : 특정 범위 내 숫자들을 균등한 간격으로
- logspace : linspace의 로그 버전
# np.arange(start, end, step)
# range와 사용법 동일
arr = np.arange(1, 10)
arr = np.arange(10)
# 결과
# [1 2 3 4 5 6 7 8 9 10]
---
# np.linspace(start, end, num=50)
# 양 끝값을 포함하는(이상/이하) 범위에서 num개의 개수만큼 분할된 수열
arr = np.linspace(1, 10, 5)
# 결과
# [ 0. 2.5 5. 7.5 10. ]
---
# np.logspace(시작지수, 끝지수, num, base=10)
arr = np.logspace(1, 3, 4)
# 결과
# [ 10. 46.41588834 215.443469 1000. ]
'Python' 카테고리의 다른 글
| [DA] NumPy 배열 인덱싱 & 슬라이싱 (0) | 2025.09.09 |
|---|---|
| [DA] 데이터 분석이란? (0) | 2025.09.08 |
| [Python] Streamlit으로 페이지 만들어보기 (0) | 2025.08.31 |
| [Python] 모듈이란? (0) | 2025.08.26 |
| [Python] 파이썬 가상환경 구축하기 (0) | 2025.08.24 |