NumPy 란?
NumPy는 Python의 과학 연산을 위한 가장 기본적인 패키지 중 하나이다.
NumPy는 "Numeric Python"의 약자이며,
대규모 다차원 배열과 행렬 연산에 필요한 다양한 함수와 매서드를 제공한다.
NumPy는 데이터 분석, 데이터 처리, 선령 대수, 머신 러닝 등 다양한 분야에서 널리 사용되고 있다.
NumPy 설치
NumPy를 사용하기 위해서는 패키지를 설치해야한다.
설치 방법은 다음과 같다.
1. cmd 창 접속
cd C:\현재 내 Python 프로젝트 폴더 상위 폴더
2. NumPy 설치
pip install numpy
번외) 팀원 패키지 개발 환경 맞추기
# 패키지를 공유할 팀원
pip freeze > 파일명 지정.txt
# 패키지를 공유 받을 팀원
pip install -r 공유받은 파일명.txt
NumPy 배열 생성
NumPy 배열은 ndarray 클래스를 사용해 생성한다.
import numpy as np
# 1차원 배열
a= np.array([1,2,3])
# 2차원 배열
b= np.array([1,2,3],[4,5,6])
# 3차원 배열
c= np.array([[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]])
NumPy 배열의 크기를 확인하는 방법을 shape 속성을 사용한다.
print(a.shape) #(3,)
print(b.shape) #(2,3)
print(c.shape) #(2,2,3)
NumPy 배열 연산
NumPy 배열은 다른 배열 또는 스칼라의 연산을 지원한다.
NumPy 배열의 연산은 배열의 원소별(element-wise)로 이뤄진다.
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 원소별 덧셈
c = a + b # [5, 7, 9]
# 원소별 곱셈
d = a * b # [4, 10, 18]
# 스칼라 연산
e = a + 1 # [2, 3, 4]
NumPy 배열의 연산에는 다양한 함수와 메서드가 있다.
가장 기본적인 연산은 Sum, Mean, Min, Max가 있다.
a = np.array([1, 2, 3])
# 합계
b = np.sum(a) # 6
# 평균
c = np.mean(a) # 2.0
# 최소값
d = np.min(a) # 1
# 최대값
e = np.max(a) # 3
NumPy 배열 인덱싱과 슬라이싱
NumPy 배열의 인덱싱과 슬라이싱은 Python 리스트의 인덱싱과 슬라이싱과 매우 유사하다.
NumPy 배열의 인덱싱과 슬라이싱을 사용하여 배열의 일부를 선택할 수 있다.
a = np.array([1, 2, 3, 4, 5])
# 인덱싱
b = a[0] # 1
c = a[2] # 3
# 슬라이싱
d = a[1:4] # [2,3,4]
e = a[:3] # [1,2,3]
f = a[3:] # [4,5]
다차원 NumPy 배열에서는 각 차원의 인덱스를 콤마로 구분하여 인덱싱한다.
a = np.array([1, 2, 3][4, 5, 6])
# 인덱싱
b = a[0, 0] # 1
c = a[1, 2] # 6
# 슬라이싱
d = a[0, 1:3] # [2,3]
e = a[:, 1] # [2,5]
f = a[:, :2] # [[1,2], [4,5]]
NumPy 배열 형태 변경
NumPy 배열 형태 변경은 다음과 같다.
a = np.array([[1, 2], [3, 4], [5, 6]])
# 배열의 형태 변경
b = a.reshpe((2,3)) # [[1,2,3],[4,5,6]]
# 배열 전치(0,1,2,... 순서대로 배열을 변경)
c = a.T # [[1,3,5],[2,4,6]]
NumPy 배열 병합과 분리
NumPy 배열을 병합하는 방법은 다음과 같다.
# 배열 형태 변경
a = np.array([[1, 2], [3, 4], [5, 6]])
# 배열의 형태 변경
b = a.reshpe((2,3)) # [[1,2,3],[4,5,6]]
# 배열 전치(0,1,2,... 순서대로 배열을 변경)
c = a.T # [[1,3,5],[2,4,6]]
다차원 배열을 병합하는 방법은 concatenate() 함수를 사용한다.
두개 이상의 배열을 병합할 경우에는 튜플 형태로 전달한다.
axis 인자를 사용해 병합할 방향을 지정할 수 있다.
axis 인자를 지정하지 않을 경우 기본값인 0으로 설정된다.
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 배열 병합
c = np.concatenate((a,b))
a = np.array([[1,2],[3,4]])
b = np.array([[5,6]])
# 배열 병합
c = np.concatenate((a,b), axis=0) # [[1,2],[3,4],[5,6]]
NumPy 배열 분리는 방법은 다음과 같다.
a = np.array([1,2,3,4,5,6])
# 배열 분리
b, c = np.split(a, [3]) # [1,2,3],[4,5,6]
NumPy 다차원 배열 분리
a = np.array([[1,2,3],[4,5,6]])
# 다차원 배열 분리
b, c = np.split(a, [1], axis=1) # [[1,2,3]], [[4,5,6]]
NumPy 주요 함수
NumPy는 배열의 계산과 관련된 다양한 함수를 제공한다.
가장 많이 사용되는 함수들은 다음과 같다.
- np.zeros() : 모든 원소가 0인 배열을 생성한다.
- np.ones() : 모든 원소가 1인 배열을 생성한다.
- np.arange() : 범위 내의 일정 간격으로 원하는 개수의 배열을 생성한다.
- np.linspace() : 범위 내에서 균등 간격으로 원하는 개수의 배열을 생성한다.
- np.random.random() : 0 부터 1 사이의 난수를 가지는 배열을 생성한다.
- np.random.randn() : 평균이 0이고 표준편차가 1인 정규 분포를 따르는 난수를 가지는 배열을 생성한다.
이 외에도 다양한 수학 함수를 제공한다.
np.sin(), np.cos(), np.exp(), np.log() 등이 있다.
이런 함수들은 NumPy 배열에서 사용되고 배열의 원소를 계산한다.
np.zeros()
arr = np.zeros((2,3))
print(arr)
## 출력 결과
## [[0. 0. 0.]
## [0. 0. 0.]]
np.ones()
arr = np.ones((2, 4))
print(arr)
## 출력 결과
## [[1. 1. 1. 1.]
## [1. 1. 1. 1.]]
np.arange()
arr = np.arange(1, 10, 2)
print(arr)
## 출력 결과
##[1 3 5 7 9]
np.linspace()
arr = np.linspace(0, 1, 5)
print(arr)
## 출력 결과
##[0. 0.25 0.5 0.75 1. ]
np.random.random()
arr = np.random.random((3, 3))
print(arr)
## 출력 결과
##[[0.82836207 0.64923568 0.29160684]
## [0.2379626 0.19701923 0.97156495]
## [0.87808482 0.24896966 0.38251797]]
np.random.randn()
arr = np.random.randn(2, 4)
print(arr)
## 출력 결과
##[[ 1.56279348 1.81959248 0.12930661 0.03816557]
## [-0.30739358 -1.10211943 -0.94918405 0.23520864]]
NumPy 수학 함수
sum(), mean() : 배열 전체 합, 평균
cumsum(), cumprod() : 배열 누적 합, 누적 곱
std(), var() : 표준편차, 분산
min(), max() : 최소값, 최대값
argmin(), argmax(): 최소 원소의 색인 값, 최대 원소의 색인 값
NumPy 난수 함수
seed() : 난수 발생기의 seed를 지정한다.
permutation() : 임의의 순열을 반환한다.
shuffle() : 리스트나 배열의 순서를 뒤섞는다.
rand() : 균등분포에서 표본을 추출한다.
randint() : 주어진 최소/최대 범위 안에서 임의의 난수를 추출한다.
randn() : 표준편차가 1이고 평균값이 0인 정규분포에서 표본을 추출한다.
binomial() : 이항분포에서 표본을 추출한다.
normal() : 정규분포(가우시안)에서 표본을 추출한다.
beta() : 베타분포에서 표본을 추출한다.
chisquare() : 카이제곱분포에서 표본을 추출한다.
gamma() : 감마분포에서 표본을 추출한다.
uniform() : 균등(0,1)에서 표본을 추출한다.
'추가 공부 > Python' 카테고리의 다른 글
[pyplot] 한글 깨짐 설정 (0) | 2024.11.30 |
---|---|
[Python] csv 모듈을 활용한 파일 입출력 (0) | 2024.11.27 |
[Python] 연산자 (2) | 2024.11.23 |
[Python] 변수와 자료형 (0) | 2024.11.22 |
[Python] 기본 자료형 (0) | 2024.11.22 |