개발 교육 일기

파이썬 교육 Day 37 (+ numpy 기초, 배열의 종류, 다차원 배열 만들기, np.linspace, np.random.rand, np.random.randn, tensorflow, 텐서플로우, axis, 인덱스와 슬라이싱, 배열의 차원과 형상, 차원수 확장하기, 차원..

오이띠 2021. 5. 7. 10:33
728x90

Numpy 기초

 

배열의 종류

  1. 스칼라 (scalar)
    • 0 차원 데이터라고 한다.
    • 단순한 값
    • scalar_val = 10
  2. 벡터 (vector)
    • 1차원 배열이라고 한다.
    • 스칼라가 연속적으로 모여있는 것.
    • vector_val = [1, 2, 3]
    • 벡터 내에 데이터가 N가 있으면 N 차원 벡터라고 한다.
  3. 행렬 (matrix)
    • 2차원 배열이라고 한다.
    • 1차원 배열인 벡터가 여러 개 모여있는 것.
    • matrix_val = [ [1,2,3], [4,5,6]]
  4. 텐서 (tensor)
    • 3차원 이상의 배열을 의미한다.
    • Tensorflow는 뭘까요...?
    • 텐서의 개념을 이용하면 모든 배열의 모양을 이야기 할 수 있다.
      • 스칼라 - 0 Rank Tensor
      • 벡터 - 1 Rank Tensor
      • 행렬 - 2 Rank Tensor
    •  

다차원 배열 만들기

  • np.arange : 1차원 정수 배열 만들 때 사용
  • np.zeros : 0 으로 채워진 0 벡터(zero-vector)를 만들 때 사용
  • np.ones : 1로 채워진 1 벡터(one-vector)를 만들 때 사용
  • np.full : 지정한 숫자로 채워진 벡터를 만들 때 사용
  • zeros, ones, full 전부다 벡터 뿐만이 아닌, 텐서까지도 생성이 가능

 

 

 

 

단위 행렬 만들기

  • np.eye
  • 단위 행렬 : 대각선의 방향의 원소가 1이고, 나머지는 0인 행렬

정수 랜덤 샘플링 하기

  • np.random.choice
  • 랜덤 샘플링 : 일정한 범위 내에서 필요한 정수를 랜덤으로 추출
  • 딥러닝에서는 mini-batch를 만들 때 사용합니다.

arr1과 arr2는 같은 배열일까요? No

  • arr1은 1차원 배열, arr2는 2차원 배열

arr1과 arr2는 같은 벡터일까요? Yes

  • arr1은 numpy에는 행벡터의 모양을 하고 있지만 실제로는 열벡터이다.
  • arr2는 열의 수가 1개인 열벡터의 모양을 하고 있다.

대부분의 머신러닝 라이브러리( sklearn, tensorflow, pytoch, caffe 등 )는 기본적인 데이터 취급을 열벡터로 하기 때문에 2차원 배열 이상부터 취급이 가능하다.

2차원 데이터 이상부터 전치행렬 변환이 가능하다.

 

axis 이해하기

axis : 축. 축이란? 데이터가 추가되는 방향

예를 들어 3차원 배열 (3, 4, 5)

  • 3차원 배열에 추가되는건? 2차원 배열
  • 2차원 배열에 추가되는건? 1차원 배열
  • 1차원 배열에 추가되는건? 0차원 스칼라

 

 

차원수 확장하기

  • 보통 기초 딥러닝에서 이미지 분석을 위한 CNN을 활용할 때 데이터를 전처리하기 위해 사용된다.
  • tensorflow는 tf.newaxis, numpy는 np.newaxis를 활용해서 추가 차원을 만들어 낼 수 있다.

tensorflow에서 CNN을 위한 이미지 데이터의 형태는 항상 (N, H, W, C)를 유지한다.

  • N : BATCH_SIZE ( 이미지의 개수 )
  • H : 이미지의 세로 픽셀 ( 세로 크기 )
  • W : 이미지의 가로 픽셀 ( 가로 크기 )
  • C : 이미지의 채널 수( 컬러이미지 RGB : 3, 흑백이미지 GRAYSCALE : 1 )

여러분들이 이미지를 크롤링을 했어요. 만약에 이미지가 흑백 이미지 라면 가로, 세로 크기 밖에 없어요 (H, W)로 이루어진 2차원 배열입니다. 이걸 4차원 배열 형태로 바꿔줘야만 해요

 

브로드 캐스팅

  • 차원 수가 다른 배열끼리의 연산
  • 차원이 달라도 0차원 스칼라의 개수가 똑같으면 연산이 가능
  • 저차원의 배열을 고차원으로 확장
  • 수학적으로는 고차원 배열의 shape과 똑같은 일벡터를 만들어서 저차원 배열과 곱한 배열을 만들어 계산

전치행렬 만들기

  • 행렬 A의 행과 열의 인덱스를 바꾼 것을 전치행렬 이라고 한다.
  • A(i,j)의 위치를 A(j,i)로 바꾼 것
  • 보통 Transpose했다고 이야기 한다.


728x90