NumPy (Numerical Python)는 파이썬에서 행렬이나 대규모 다차원 배열을 쉽게 처리하는 등 강력한 수치 계산을 지원하는 파이썬 라이브러리입니다. 다차원 배열 객체인 ndarray를 중심으로 다양한 수학적 연산을 수행할 수 있습니다. 보통 넘파이라고 읽습니다.
| 기능 | 설명 | 주요 함수 |
|---|---|---|
| 배열 생성 | 리스트나 튜플을 배열로 변환 | np.array() |
| 0으로 채운 배열 생성 | np.zeros() | |
| 1로 채운 배열 생성 | np.ones() | |
| 특정 값으로 채운 배열 생성 | np.full() | |
| 연속된 숫자 배열 생성 | np.arange() | |
| 균등 간격 배열 생성 | np.linspace() | |
| 단위 행렬 생성 | np.eye() | |
| 배열 속성 확인 | 배열의 차원 확인 | .ndim |
| 배열의 형태(shape) 확인 | .shape | |
| 배열의 요소 개수 확인 | .size | |
| 배열의 데이터 타입 확인 | .dtype | |
| 배열 변형 | 배열 크기 변경 | .reshape() |
| 배열 1차원으로 변환 | .flatten() | |
| 차원 추가 | np.newaxis | |
| 배열 전치(Transpose) | .T | |
| 배열 연산 | 요소별 사칙연산 | +, -, *, / |
| 요소별 제곱 연산 | ** | |
| 배열의 내적 연산 | np.dot() 또는 @ | |
| 브로드캐스팅 연산 지원 | 자동 크기 확장 | |
| 배열 슬라이싱 | 특정 인덱스 접근 | arr[i, j] |
| 행/열 선택 | arr[i, :], arr[:, j] | |
| 범위 선택 (슬라이싱) | arr[start:end] | |
| 통계 및 집계 연산 | 배열의 합 | .sum() |
| 평균 계산 | .mean() | |
| 최대/최소 값 | .max(), .min() | |
| 표준편차 계산 | .std() | |
| 분산 계산 | .var() | |
| 난수 생성 | 0~1 사이 난수 배열 | np.random.rand() |
| 정수 난수 생성 | np.random.randint() | |
| 정규 분포 난수 생성 | np.random.randn() | |
| 난수 시드 고정 | np.random.seed() | |
| 배열 비교 및 조건 연산 | 요소별 비교 | >, <, == |
| 조건에 맞는 값 필터링 | arr[arr > 3] | |
| 특정 조건 값 변경 | np.where(condition, x, y) | |
| 배열 정렬 | 오름차순 정렬 | np.sort() |
| 내림차순 정렬 | np.sort(arr)[::-1] | |
| 특정 축을 기준으로 정렬 | np.sort(arr, axis=0) | |
| 행렬 연산 | 행렬 곱셈 | np.dot() 또는 @ |
| 역행렬 계산 | np.linalg.inv() | |
| 행렬식 계산 | np.linalg.det() | |
| 고유값 및 고유벡터 | np.linalg.eig() | |
| 파일 입출력 | 배열을 파일로 저장 | np.save() |
| 여러 배열을 저장 | np.savez() | |
| CSV 파일로 저장 | np.savetxt() | |
| CSV 파일 불러오기 | np.loadtxt() |
pip install numpy import numpy as np # 리스트로부터 배열 생성
arr = np.array([1, 2, 3, 4, 5])
print(arr) # [1 2 3 4 5] arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d)
# [[1 2 3]
# [4 5 6]] print(arr2d.shape) # (2, 3) -> 2행 3열
print(arr2d.ndim) # 2 -> 차원 수
print(arr2d.dtype) # int32 (또는 int64)
print(arr2d.size) # 6 -> 전체 요소 개수 np.zeros((3, 3)) # 3x3 영행렬
np.ones((2, 4)) # 2x4 1로 채운 행렬
np.eye(4) # 4x4 단위행렬
np.full((2, 3), 7) # 2x3 모든 원소가 7인 행렬
np.arange(10) # 0부터 9까지의 배열 생성
np.linspace(0, 1, 5) # 0~1 사이 5개 균등 분포 값 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] arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[0, 2]) # 첫 번째 행, 세 번째 열 (3)
print(arr[1, :]) # 두 번째 행 전체 [4, 5, 6]
print(arr[:, 1]) # 두 번째 열 전체 [2, 5, 8]
print(arr[0:2, 1:3]) # (0~1행, 1~2열) arr = np.array([[1, 2, 3], [4, 5, 6]])
reshaped = arr.reshape(3, 2)
flattened = arr.flatten()
print(reshaped)
# [[1 2]
# [3 4]
# [5 6]]
print(flattened) # [1 2 3 4 5 6] a = np.array([[1], [2], [3]])
b = np.array([4, 5, 6])
print(a + b)
# [[5 6 7]
# [6 7 8]
# [7 8 9]] arr = np.array([1, 2, 3, 4, 5])
print(arr.sum()) # 15
print(arr.mean()) # 3.0
print(arr.max()) # 5
print(arr.min()) # 1
print(arr.std()) # 표준편차
print(arr.var()) # 분산 np.random.seed(42) # 난수 고정
print(np.random.rand(3)) # 0~1 사이 난수 3개
print(np.random.randint(1, 10, (2, 3))) # 1~10 사이 정수 (2x3) A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(np.dot(A, B)) # 행렬 곱
print(A @ B) # 행렬 곱 (동일)
print(np.linalg.inv(A)) # 역행렬
print(np.linalg.det(A)) # 행렬식
print(np.linalg.eig(A)) # 고유값 & 고유벡터 NumPy는 데이터 분석, 머신러닝, 과학 연산 등에 필수적인 라이브러리로, 다차원 배열을 빠르고 효율적으로 다룰 수 있습니다! 🚀
국내 금융권에서 AI를 이용한 해킹과 대규모 정보유출이 잇따르자, 은행들이 이제 해외 법인과 지점의 보안까지 다시…
서울 전역이 토지거래허가구역으로 묶인 지 1년이 됐습니다. 집을 못 팔게 막으면 값이 내려갈 거라는 기대도…
어제 5거래일 연속으로 밀렸던 코스피가 오늘 아침 확 반등했습니다. 오전 9시 12분 기준 코스피는 6,165.02로…
AI 이야기는 이제 "어떤 모델이 더 똑똑한가"에서 "누가 계산 자원을 더 싸고 안정적으로 쥐고 있나"로…
어제 코스피가 하루에 348.89포인트, 5.46% 빠지면서 6,035.35로 마감했습니다. 장중에는 5,911선까지 밀렸다가 겨우 6,000선 위로 올라왔는데요,…