728x90
NumPy란?
NumPy(NumPy: Numerical Python)는 Python에서 수치 연산을 효율적으로 처리하기 위한 라이브러리입니다. 특히, 다차원 배열 객체 ndarray를 사용해 대규모 데이터 처리를 간단하고 빠르게 수행할 수 있습니다. 또한, 배열 및 행렬 연산, 선형대수, 푸리에 변환, 난수 생성 등의 기능을 제공합니다.
NumPy 설치
pip install numpy
NumPy의 핵심 요소
1. ndarray: 다차원 배열 객체
NumPy의 핵심 데이터 구조로, 리스트와 유사하지만 크기가 고정되고 동일한 데이터 타입만 저장 가능합니다.
import numpy as np
# 1D 배열
arr1 = np.array([1, 2, 3])
# 2D 배열
arr2 = np.array([[1, 2], [3, 4]])
print(arr1)
print(arr2)
# 넘파이로 1차원 배열을 만드는 방법 : 1차원은 배열이라고 백터라고도 부른다
주요 기능
1. 배열 생성
- 기본 배열 생성
np.array([1, 2, 3]) # 리스트를 배열로 변환
np.zeros((2, 3)) # 0으로 채워진 배열
np.ones((2, 3)) # 1로 채워진 배열
np.full((2, 3), 7) # 특정 값(7)으로 채워진 배열
np.eye(3) # 단위 행렬 (3x3)
np.empty((2, 2)) # 초기화되지 않은 배열
- 연속적 값 배열 생성
np.arange(0, 10, 2) # 0부터 10까지 2씩 증가
np.linspace(0, 1, 5) # 0부터 1까지 5개의 균일한 간격
2. 난수 생성
np.random.rand(2, 3) # 0~1 사이의 난수 (균등 분포)
np.random.randn(2, 3) # 표준 정규분포 난수
np.random.randint(0, 10, (2, 3)) # 정수 난수
3. 배열의 속성
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape) # 배열의 크기 (2, 3)
print(arr.ndim) # 차원 (2)
print(arr.size) # 총 원소 개수 (6)
print(arr.dtype) # 데이터 타입 (int32 등)
4. 배열 연산
- 기본 연산
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b) # [5 7 9]
print(a * b) # [4 10 18]
print(a ** 2) # [1 4 9]
- 브로드캐스팅 서로 다른 크기의 배열 간 연산을 지원합니다.
a = np.array([1, 2, 3])
b = 2
print(a + b) # [3 4 5]
5. 배열 인덱싱과 슬라이싱
- 인덱싱
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, 1]) # 2
- 슬라이싱
print(arr[:, 1]) # 두 번째 열
print(arr[0, :]) # 첫 번째 행
6. 유용한 함수들
- 집계 함수
arr = np.array([1, 2, 3, 4])
print(np.sum(arr)) # 합계
print(np.mean(arr)) # 평균
print(np.max(arr)) # 최댓값
print(np.min(arr)) # 최솟값
print(np.std(arr)) # 표준편차
- 형태 변환
arr = np.array([[1, 2], [3, 4]])
print(arr.reshape((4, 1))) # 배열 형태 변경
print(arr.flatten()) # 1D 배열로 변환
7. 배열 결합과 분할
- 결합
a = np.array([[1, 2]])
b = np.array([[3, 4]])
print(np.vstack((a, b))) # 수직 결합
print(np.hstack((a, b))) # 수평 결합
- 분할
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.hsplit(arr, 3)) # 수평 분할
print(np.vsplit(arr, 2)) # 수직 분할
NumPy의 주요 내장 함수
1. 배열 생성 함수
함수 | 설명 |
np.array() | 입력 데이터를 배열로 변환합니다. |
np.zeros() | 모든 요소가 0으로 초기화된 배열을 생성합니다. |
np.ones() | 모든 요소가 1로 초기화된 배열을 생성합니다. |
np.empty() | 초기화되지 않은 배열을 생성합니다. |
np.full() | 특정 값으로 채워진 배열을 생성합니다. |
np.eye() | 단위 행렬(대각선이 1인 행렬)을 생성합니다. |
np.arange() | 특정 범위 내에서 일정 간격으로 숫자를 생성합니다. |
np.linspace() | 시작과 끝 값을 기준으로 균등 간격의 숫자를 생성합니다. |
np.random.rand() | 0~1 사이의 균일 분포 난수를 생성합니다. |
np.random.randint() | 지정한 범위의 정수 난수를 생성합니다. |
2. 배열 정보 확인 함수
함수 | 설명 |
np.shape | 배열의 모양(크기)를 반환합니다. |
np.ndim | 배열의 차원 수를 반환합니다. |
np.size | 배열의 전체 요소 개수를 반환합니다. |
np.dtype | 배열의 데이터 타입을 반환합니다. |
np.itemsize | 배열 요소 하나의 크기(바이트 단위)를 반환합니다. |
np.nbytes | 배열 전체 크기(바이트 단위)를 반환합니다. |
3. 배열 연산 함수
함수 | 설명 |
np.add() | 두 배열의 요소별 합을 계산합니다. |
np.subtract() | 두 배열의 요소별 차를 계산합니다. |
np.multiply() | 두 배열의 요소별 곱을 계산합니다. |
np.divide() | 두 배열의 요소별 나눗셈을 계산합니다. |
np.dot() | 행렬 곱셈(내적)을 계산합니다. |
np.sqrt() | 배열의 각 요소에 대해 제곱근을 계산합니다. |
np.exp() | 배열의 각 요소에 대해 지수(e^x)를 계산합니다. |
np.log() | 배열의 각 요소에 대해 자연 로그를 계산합니다. |
4. 통계 및 집계 함수
함수 | 설명 |
np.sum() | 배열 요소의 합계를 계산합니다. |
np.mean() | 배열 요소의 평균을 계산합니다. |
np.median() | 배열 요소의 중앙값을 계산합니다. |
np.var() | 배열 요소의 분산을 계산합니다. |
np.std() | 배열 요소의 표준편차를 계산합니다. |
np.min() | 배열 요소의 최솟값을 반환합니다. |
np.max() | 배열 요소의 최댓값을 반환합니다. |
np.argmin() | 배열 요소 중 최솟값의 인덱스를 반환합니다. |
np.argmax() | 배열 요소 중 최댓값의 인덱스를 반환합니다. |
5. 배열 변형 함수
함수 | 설명 |
np.reshape() | 배열의 모양을 변경합니다. |
np.transpose() | 배열의 축(axes)을 교환합니다. |
np.flatten() | 배열을 1차원으로 평탄화합니다. |
np.ravel() | 배열을 1차원으로 평탄화하며 원본 데이터에 영향을 미칩니다. |
np.concatenate() | 두 배열을 연결합니다. |
np.stack() | 새로운 축을 추가하여 배열을 쌓습니다. |
np.split() | 배열을 특정 기준으로 분할합니다. |
np.hstack() | 배열을 수평으로 쌓습니다. |
np.vstack() | 배열을 수직으로 쌓습니다. |
6. 논리 연산 및 조건 함수
함수 | 설명 |
np.all() | 모든 요소가 참(True)인지 확인합니다. |
np.any() | 하나라도 요소가 참(True)인지 확인합니다. |
np.where() | 조건에 따라 배열 요소를 선택합니다. |
np.logical_and() | 두 배열 요소의 논리 AND를 계산합니다. |
np.logical_or() | 두 배열 요소의 논리 OR를 계산합니다. |
np.logical_not() | 배열 요소의 논리 NOT을 계산합니다. |
7. 기타 유용한 함수
함수 | 설명 |
np.unique() | 배열의 고유값을 반환합니다. |
np.sort() | 배열 요소를 정렬합니다. |
np.argsort() | 정렬된 배열의 인덱스를 반환합니다. |
np.cumsum() | 배열 요소의 누적 합계를 반환합니다. |
np.cumprod() | 배열 요소의 누적 곱을 반환합니다. |
np.isclose() | 두 배열의 요소가 일정 허용 오차 내에 있는지 확인합니다. |
np.isnan() | 배열 요소가 NaN인지 확인합니다. |
728x90
'🐍 Python' 카테고리의 다른 글
파이썬 기초 : 판다스 실습 | 데이터 분석 (0) | 2025.01.22 |
---|---|
파이썬 기초 : Pandas(판다스) DataFrame과 Series, 빌트인 함수 (0) | 2025.01.21 |
파이썬 기초 : Functions(함수), Lambda Expressions(람다 표현식) (0) | 2025.01.21 |
파이썬 기초 : 조건문 , 반복문 (0) | 2025.01.20 |
파이썬 기초 : 튜플(Tuple) (0) | 2025.01.19 |