본문으로 바로가기

Numerical Python - Numpy

category boostcamp/AI tech prep 2021. 11. 24. 23:47
Categoryboostcamp/AI tech prep
Tagpython
날짜
발행 여부

Overview

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

  • numpy
  • ndarray
  • Handling shape
  • Indexing
  • Slicing
  • Creation function
  • Operation functions
  • array operations
  • Comparisons
  • Boolean Index
  • Fancy Index
  • numpy data i/o

Numpy

  • 반복문 없이 배열에 대한 처리
  • 빠름.
  • C 와 포트란 같은 언어들과 호환 가능
import numpy as np
  • 하나의 데이터 type 만 배열에 넣을 수 있다.
    • 즉, dynamic typing 을 할 수 없다.
      • 빠른 속도 가능케 함.
      • C 처럼 배열이 일렬로 데이터 구조 상에 늘어져있다.
python 에서, copy.deepcopy 로 완전한 복제가 가능함.

Reshape

np.array(test_matrix).reshape(-1,2).shape
  • -1 은 변수라고 볼 수 있다.
  • test_matrix 의 크기가 총 100이라면, column 수가 2로 reshape 하기로 했으므로 row 는 50이 될 것이다.

Flatten

  • 다차원의 array 를 1차원 array 로 변환한다.
    • reshape 을 쓰는 것과 동일하지만, 더 특화된 방식이다.
실제 코드를 작성할 때 혹은 흐름을 따라갈 때, matrix 의 shape 을 따라가는 경우가 매우 많을 것이다.

Indexing

[0][0] 과 같은 [0,0] 을 제공한다.

Slicing

💡
python 의 list 와는 다르게, 행 열 부분을 나눠서 slicing이 가능하다.

Functions

arange

range 와 같은 함수이다.

  • array 의 범위를 지정하여, 값의 list 를 생성하는 명령어
    • 1차원으로 생성해주는데, 2차원으로 만들고 싶다면, reshape 을 하면 된다.
.tolist() 로 list 화 할 수 있다.

ones, zeros, empty

oneszeros 를 많이 쓴다.

something_like

생각보다 deeplearning 때 많이 쓴다. numpy 의 데이터를 미분가능하게 한게 텐서플로우여서, 텐서플로우에 numpy 의 함수들이 많다.

Identity, eye, diag, random sampling

Operation Functions

axis

  • 축(axis) 자체가 매우 중요하다.
test_array = np.arange(1,13).reshape(3,4)
test_array.sum(axis=1), test_array.sum(axis=0)
  • sumaxis 에 따라서 다르게 더할 수 있다.
  • 어떤 array 의 shape 이 (5,6,7) 이라고 생각하면
    • axis=0 은 5를 기준으로
    • axis=1 은 6을 기준으로
    • axis=2 는 7을 기준으로
  • 하는 것이다.
새로 생기는 축. 즉, 가장 고차원의 축이 axis=0 이 된다. 그 이후의 차원이 axis=1 ...

mean, std, Mathmetical functions...

일단 알아만두자.

Concat

  • np.vstack : vertical. 수직 합성
  • np.hstack : horizontal. 수평 합성
  • np.concat : axis 설정에 따라서, vstackhstack 을 둘 다 수행할 수 있다.
이러한 tensor 들을 붙이는 것들은 상당히 자주 쓴다.

Operations b/t arrays

💡
중요하다!
  • element wise 는 같은 위치에 있는 값들끼리 연산해주는 것이다.
    • array 간의 shape 이 같아야 이루어진다.
  • .dot() 은 실제 행렬간의 곱셈을 말한다.
  • transpose()
  • 가장 중요한 broadcasting
    • shape 이 다른 배열 간 연산을 지원해주는 기능이다.
    • scalar - vector 간의 연산
    • vector - matrix 간의 연산도 지원한다.

Comparisons

💡
더 중요한 것들

All, Any

  • np.all(조건) : 조건이 모두 만족하면 True, 아니면 False
  • np.any(조건) : 조건이 하나라도 만족하면 True, 아니면 False
  • .logical_and()
  • .logical_or()
    • 이 두 개는 별로 안 중요하다.

np.where

  • np.where(조건)
    • 조건에 맞는 인덱스를 반환해준다.
  • np.where(조건, true 일 때 반환 값, false 일 때 반환 값)
np.where 이랑 정렬을 같이 쓰면..

np.NaN np.Inf np.isfinite

argmax, argmin

  • np.argmax
  • np.argmin
    • 각 최대 최소의 index 를 찾아준다.
    • axis 를 설정하여 각 축의 최소 최대를 반환해준다.
모든 것을 외울 수는 없으니, 필요할 때 검색해서 쓰자.

boolean index

where 로 index 를 가져왔다면, boolean index 로 필요한 것만을 가져올 수 있다.

fancy ind

  • int 로 선언한 array 를 index value 로 사용해서 다른 array 의 값을 추출하는 방법
  • boolean index 와 비슷하지만 사용 방법이 다르다.
추천 시스템 쪽을 공부하면 이런 기법들을 상당히 많이 사용한다.
take 를 사용하는 것이 더 명확하다.
반응형

'boostcamp > AI tech prep' 카테고리의 다른 글

Pandas (2 장 완료해야함)  (0) 2021.12.12
Module and Project  (0) 2021.11.14
Pythonic Code  (0) 2021.11.09