머신러닝,딥러닝/numpy 강의&프리코스

numpy 8. array op 9. comparisons

mcdn 2021. 6. 14. 17:38
반응형

Numerical Python - Numpy

 

학습 목표

 

이번 강의에서는 파이썬의 과학 계산용 패키지인 numpy 의 여러 특징과 기능, 코드를 작성하는 방법 등을 배웁니다. 

  • numpy
  • ndarray
  • Handling shape
  • Indexing
  • Slicing 
  • Creation function
  • Operation functions 
  • array operations
  • Comparisons (이 글 범위)
  • Boolean Index
  • Fancy Index
  • numpy data i/o

강의 영상

Numerial Python - numpy
Data handling section

https://blog.naver.com/boostcamp_official/222345119688

 

부스트캠프 AI Tech 2기 자가 진단 문항

부스트캠프 AI Tech 2기 자가 진단! Do you have a DNA of AI engineer? 지금, AI 엔지니어의 ...

blog.naver.com

https://www.boostcourse.org/ai100/lecture/739178?isDesc=false 

 

[AI Tech Pre-course] 인공지능(AI) 기초 다지기

부스트코스 무료 강의

www.boostcourse.org

 

array operations

1. operations b/t arrays 

2. element wise operations 

3. dot product 

4. transpose

5. boradcasting 

6. numpy performance #1 #2


Operations b/t arrays

- Numpy는 array간의 기본적인 사칙 연산을 지원함

더하기 

빼기 

곱셈 나누기 

같은 위치 값들끼리 연산한다. 

 

 

Element-wise operations

- Array간 shape이 같을 때 일어나는 연산

마찬가지로 같은 위치끼리 연산한다 

 

Dot product

- Matrix의 기본 연산
- dot 함수 사용

 

dot을 쓰면 

1*7 + 2*9 + 3*11 = 58 

58이 나온다 

matrix는 이렇게 연산한다 



https://www.mathsisfun.com/algebra/matrix-multiplying.html

 

How to Multiply Matrices

How to Multiply Matrices A Matrix is an array of numbers: A Matrix (This one has 2 Rows and 3 Columns) To multiply a matrix by a single number is easy: These are the calculations: 2×4=8 2×0=0 2×1=2 2×-9=-18 We call the number ("2" in this case) a scala

www.mathsisfun.com

 

 

 

 

transpose

- transpose 또는 T attribute 사용

전치행렬 선형대수학에서, 전치 행렬은 행과 열을 교환하여 얻는 행렬이다. 

즉, 주대각선을 축으로 하는 반사 대칭을 가하여 얻는 행렬이다.

요로케 

 

broadcasting

- Shape이 다른 배열 간 연산을 지원하는 기능
모두에게 동일한 연산 적용! (메시지 브로드캐스팅같네)

scalar-vetor 외에도 vector-matrix 간의 연산도 지원 한다 

 

 

중요중요 

 

 

 

 

Numpy performance #1

def sclar_vector_product(scalar, vector):
result = []
for value in vector:
result.append(scalar * value)
return result
iternation_max = 100000000
vector = list(range(iternation_max))
scalar = 2
%timeit sclar_vector_product(scalar, vector) # for loop을 이용한 성능
%timeit [scalar * value for value in range(iternation_max)] # list comprehension을 이용한 성능
%timeit np.arange(iternation_max) * scalar # numpy를 이용한 성능

- timeit: jupyter 환경에서 코드의 퍼포먼스를 체크하는 함수

 

Numpy performance #2

- 일반적으로 속도는 아래 순
for loop < list comprehension < numpy
- 100,000,000 번의 loop이 돌 때 약 약 4배 이상의 성능 차이를 보임
- Numpy는 C로 구현되어 있어, 성능을 확보하는 대신
- 파이썬의 가장 큰 특징인 dynamic typing을 포기함
- 대용량 계산에서는 가장 흔히 사용됨
- Concatenate 처럼 계산이 아닌, 할당에서는 연산 속도의 이점이 없음

 

 

 

 

 

 

 

 

comparisons


1. all & any

All & Any

- Array의 데이터 전부(and) 또는 일부(or)가 조건에 만족 여부 반환

any à 하나라도 조건에 만족한다면 true

all à 모두가 조건에 만족한다면 true


Comparison operation #1

- Numpy는 배열의 크기가 동일 할 때
element간 비교의 결과를 Boolean type으로 반환하여 돌려줌

any à 하나라도 true라면 true

 

Comparison operation #2

np.logical_and(a>0, a<3) # and 조건의 condition 

array([True,False,False], dtype=bool)

 

np.logical_not(b) #NOT 조건의 condition 

array([False, True, False], dtype=bool)

 

np.logical_or(b, c) # OR 조건의 condition 

array([True,True,True], dtype = bool)

 

 


np.where

# where (condition, TRUE, FALSE) 

 

np.where(a>5)
Index 값 반환

 

np.isnan(a)
Not a Number

 

 

np.isfinite(a)
is finite number

 

argmax & argmin

- array내 최대값 또는 최소값의 index를 반환함
- axis 기반의 반환


 

 

 

 

 

 

반응형