NumPy 소개
Numpy는 고성능 과학 계산 컴퓨팅과 데이터 분석을 위한 기본 패키지
- Numerical Python의 줄임말
- 다차원 배열의 자료구조 클래스인 ndarray 클래스를 지원
배열 연산은 C로 구현된 내부 반복문을 사용
파이썬 반복문에 비해 속도가 빠름
- 벡터와 행렬을 사용하는 선형대수 계산에 주로 사용
벡터화 연산을 이용하여 간단한 코드로도 복잡한 선형 대수 연산을 수행
배열 인덱싱을 사용한 질의 기능을 이용하여 간단한 코드로도 복잡한 수식을 계산
빅데이터 및 머신러닝 응용 분야에 기본 패키지로 활용
배열 생성
NumPy 다차원 배열의 자료구조 클래스인 ndaaray 클래스를 사용하여 배열 생성
-
np.array() 함수
입력 데이터(리스트, 튜플 등)를 ndarray로 변환
-
배열 속성
dtype: 자료형 표시
ndim: 차원의 갯수 즉 랭크를 표시
shape: 각 차원의 크기를 튜플 형식으로 표시
size: 원소의 개수를 알려 줌.
배열 표현
배열(dimension)의 차원을 축(axis)이라 하며, 축의 갯수를 랭크(rank)라고 함.
배열 초기화 생성
NumPy는 원하는 구조(shape)의 배열을 생성하고, 각 요소를 특정 값으로 초기화하는 함수 제공
-
np.zeros(shape, dtype=float, order='C')
지정된 구조의 배열을 생성하고, 모든 요소를 0으로 초기화
-
np.zeros(shape, dtype=float, order='C')
지정된 구조의 배열을 생성하고, 모든 요소를 1로 초기화
-
np.zeros(shape, fill_value, dtype=None, order='C')
지정된 구조의 배열을 생성하고, 모든 요소를 지정한 "fill_value"로 초기화
-
np.zeros(shape, dtype=float, order='C')
지정된 구조의 배열 생성하고, 초기화 값 없음
-
like 함수
-
지정된 배열과 같은 구조의 행렬을 생성
-
np.zeros_like, np.ones_like, np.full_like, np.enpty_like
배열 연산
NumPy는 배열 및 요소 간의 연산을 지원
-
산술 연산 +, -, *, /
-
비교 연산 >, <, >=, <=, ==, !=
-
수학 함수 exp(), sprt(), sin(), cos(), tan()
-
집계 함수 sum(), mean(), min(), max(), std(), var(), cumsum(), argmax(), argmin()
기본적으로 배열 연산은 동일한 구조(shape)의 배열 간 연산
- 구조가 다른 배열 간 연산시 브로드캐스팅(broadcasting) 적용
배열 연산 - 집계 함수
집계 함수는 축(axis)를 기준으로 집계되는 요소들 계산
- 축이 지정되지 않으면 axis=None
- 2차원 배열 기준 집계함수의 축
- None (전체), 0 (열의 요소 집계), 1 (행의 요소 집계)
브로드캐스팅 (Broadcasting)
구조(shape)가 다른 배열 간의 연산 시 브로드캐스팅 적용
- 서로 크기가 다른 두 배열을 각 축 방향으로 중복 확장 시켜서 두 배열의 크기가 같아지게 만든 후 연산을 수행
데이터 생성 및 구조 변형
데이터 생성
- numpy.arrange([start,] stop[step,], dtype = None)
- start부터 stop 미만까지 step 간격으로 데이터를 생성
데이터 구조 변형
- ndarray.reshape(shape, order='C')
- 데이터는 보존하면서 배열의 구조를 변경
슬라이싱 (Slicing)
슬라이싱을 사용하여 배열의 요소 중 일부를 참조
- 배열 인덱스에서 시작:끝 으로 위치 지정
끝으로 지정된 인덱스는 불포함
-1은 마지막 요소의 인덱스를 의미
- 슬라이싱된 배열은 복사되는 것이 아니라 원본 배열 참조
슬라이싱 배열을 변경하면 원본 변경
복사 시에는 numpy.copy() 함수 사용
불린 인덱싱 (Boolean Indexing)
불린 인덱싱은 배열 각 요소의 선택 여부를 True, False로 지정
조건 연산
조건 연산
- numpy.where(cond, x, y)
- if cond x else y
- cond는 조건 또는 불린 인덱싱
팬시 인덱싱 (Fancy Indexing)
팬시 인덱싱은 배열로 인덱스를 표시
Matplotlib.pylot 라이브러리
Matplotlib.pylot 라이브러리는 파이썬에서 자료를 차트나 그래프 등으로 시각화하는 패키지