Numpy
2022. 3. 18. 09:27ㆍPython
What is Numpy?
- numpy는 "numerical python"의 약자
- Numerical Computing : 컴퓨터가 실수값을 효과적으로 계산할 수 있도록 하는 연구 분야
- Vector Arithmetic : 벡터 연산 > 데이터가 벡터로 표현되기 때문
- numpy는 다양한 머신러닝 라이브러리들에 의존성을 가지고 있고, 일반 파이썬 리스트에 비해 강력한 성능을 자랑gka
- 성능 : numpy array >> python list (or tuple)
- python list와 비슷한 개념을 numpy에서는 numpy array라고 부름 : 파이썬 리스트처럼 여러 데이터를 한번에 다룰 수 있으나, 모든 데이터가 동일한 data type을 가져야함
Numpy Basics
- 주피터 노트북에서 Numpy 설치
!pip install numpy # Window
!pip3 install numpy # Mac
- numpy 라이브러리를 불러옵니다.
import numpy as np
브로드 캐스팅
- 벡터 연산시 shape이 큰 벡터의 길이만큼 shape이 작은 벡터가 연장되어 연산
Numpy function(유니버셜 함수)
# 연산함수 기본구조
EX) np.sum #(연산대상, axis=연산방향)
EX) dtype()
# 수리연산
prod()
dot()
sum()
cumprod()
cumsum()
abs()
sqaure()
sqrt()
exp()
log()
# 통계연산
mean()
std()
var()
max()
min()
argmax() # 최대값이 존재하고 있는 인덱스 넘버를 리턴
argmin() # 최소값이 존재하고 있는 인덱스 넘버를 리턴
# 로직연산
arange() # 범위설정 (시작포인트, 마지막포인트+1, 스텝수)
linspace() #범위 데이터 생성 (시작포인트, 마지막포인트+1, 데이터 개수)
isnan() # 결측 확인
isinf() # 발산 확인(무한)
unique() # 고유값 확인
# 기하
shape() # 데이터 구조확인
reshape() # 데이터 shape 변경
ndim() # 데이터 차원 확인
transpose() # 전치행렬
Numpy array
- numpy 연산의 기본이 되는 데이터 구조
- 연산이 빠름
- 브로드캐스팅 연산을 지원
- 같은 type의 데이터만 저장 가능
- numpy의 경우에는 append라는 함수가 있으나, 의미가 다름
- numpy array의 크기를 변경하는 경우에는 복사가 일어남
- numpy array는 선언할 때 크기를 지정한 뒤, 변경할 수 없다. list.append(), pop()을 통해 자유롭게 원소 변경 및 크기 변경이 가능하지만, numpy array는 만들어지고 나면 원소의 update는 가능하지만, array의 크기를 변경할 수는 없다.
# 특수한 형태의 array
ones() # 1로 초기화한 array 생성
zeros() # 0으로 초기화
empty() # 빈 값으로 초기화
eye() # 항등행렬로 초기화 # shape이 안맞는 경우 연산이 가능하도록 할 때
@ # 행렬내적 연산
팬시인덱싱
- numpy에서 벡터연산을 통해 bool 형태의 벡터를 기준으로 데이터를 선별하는 방법
# 테스트 array 생성
pet = np.array(['개', '고양이', '고양이', '햄스터', '개', '햄스터'])
indexing_test = np.random.randn(6, 5)
indexing_test
# pet array 조건연산
(pet == '고양이') | (pet == '햄스터')
# 팬시인덱스 전달
indexing_test[(pet == '고양이') | (pet == '햄스터')]'
# 조건연산 추가 sum, any, all
(pet == '고양이').sum()
(pet == '고양이').any() # 값이 하나라도 있으면 True
(pet == '고양이').all() # 값이 모두 '고양이'이면 True