Numpy

2022. 3. 18. 09:27Python

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

 

'Python' 카테고리의 다른 글

Visualization - Seaborn  (0) 2022.03.18
Pandas  (0) 2022.03.18
Function  (0) 2022.03.18
인덱싱  (0) 2022.03.18
데이터 정렬  (0) 2022.03.18