Numpy - Code Score 01

Source: https://github.com/drtagkim/Lab/blob/master/Education/ScoreNumpy/ScoreNumpy01.ipynb

Numpy Code Score 01

파이썬이 데이터 과학 도구가 될 수 있었던 이유? 바로 Numpy가 있기 때문이다. Numerical Python, 줄여서 np는 강력한 벡터 연산 도구이다.

여러분을 위해 33개의 코드 스코어를 준비했다. 코딩의 최고 연습법은 악보를 연주하듯 코드를 암기하여 반복적으로 적어보는 것이다. 노트 프로그램이면 뭐든 괜찮다. 손으로 해도 된다. 이제부터 33개 numpy 코드 악보를 익혀보자. 오늘은 첫 시간이다.

import numpy as np
# 배열 만들기, 입력값을 list로 주는 경우
a=np.array([1,2,3])
print("What type? ",type(a))
print("What shape? ",a.shape)
print("Values of 1st and 2nd? ",a[0],a[1])
a[0]=5
print("New value of 1st?", a)

  • import numpy as np #numpy를 np라는 이름으로 불러온다.
  • np.array() #벡터 배열 혹은 텐서(tensor)를 만든다.
  • type(a) #객체의 타입을 반환한다.
  • a.shape #텐서의 차원 형태를 반환한다.
  • a[0], a[1] #차원 값을 읽어온다.
  • a[0]=5 #대입한다.
직접 입력해서 결과를 확인하자. Google Colab에 들어가서 코드를 실행하며 결과를 관찰하기를 바란다. 

자, 위의 코드를 모두 외워서 메모장에 재현해보자. 할 수 있을 때까지 암기하고 반복하면 된다.

텐서?

자료를 차원(dimension)으로 묶어 정리하면 텐서가 된다. 예를 들어, 1반의 학생이 3명, 2반의 학생이 3명이 있다고 하자. 그리고 우리는 각 학생의 점수를 알고 있다. 이제 점수를 차원으로 묶어 텐서로 표현하자.

반의 구분이 없는 경우(점수=1차원), 텐서는 [100,90,80,40,50,60] 이렇게 6개의 점수로 된 1차원의 배열(array)이다. N차원의 배열을 ndarray 라고 한다. 

반의 구분이 있는 경우(반=1차원, 점수=2차원), 2차원 텐서가 되어 [1반=[100,90,80],2반=[40,50,60]], 줄여서 [[100,90,80],[40,50,60]]이 된다. 텐서는 차원을 더하면 더 늘어난다. 또한 차원을 제거하면 줄어든다.

텐서를 늘여보자. 남자/여자 차원을 추가한다. 이제 텐서는 (반=1차원, 성별=2차원, 점수=3차원)의 3차원 텐서가 된다. 즉, [[[100,90],[80]],[[40],[50,60]]] 이 된다. 앞쪽이 여자, 뒷쪽이 남자다.

여러분은 텐서플로(Tensorflow)를 들어봤을 것이다. 이때의 텐서가 바로 차원을 가진 자료의 뜻이다. 텐서는 물리학에도 나온다. 크게 보면 같은 개념이다. 텐서의 특징은 차원의 변화가 관점에 따라 자유롭다는 것이다. 위의 예에서 우리는 얼마든지 텐서를 3차원에서 1차원까지 자유롭게 바꿀 수 있다. 이러한 자료의 변화되는 흐름(flow)에 따라 딥러닝을 해나가는 패키지가 바로 구글의 텐서플로다.

Numpy는 텐서를 다룰 수 있도록 하는 파이썬의 패키지다. 텐서는 딥러닝을 위한 텐서플로나 케라스, PyTorch의 기본이다. 따라서 Numpy를 다룰 수 있어야 딥러닝도 잘 할 수 있는 법이다.

댓글 없음:

댓글 쓰기

PyR Intro - 신입생OT학기제