[부스트캠프 AI Tech 3기 Pre-Course] Numpy 1

ossap·2021년 12월 1일
0

Part 3. Python Basics for AI
chapter 5) Numpy


네이버 AI 부스트캠프의 Pre-course 수업을 듣던 중 공부한 내용을 정리하고, 추가적으로 따로 공부한 부분이 생기면 함께 필기했습니다.

대부분의 캡쳐, 정보는 부스트캠프 강의에서 얻었으며 오직 개인 공부의 목적으로 포스팅합니다.

강의 링크는 여기에

Numpy 1

1. numpy 모듈의 호출

import numpy as np
  • numpy는 np.array 함수를 활용 배열을 생성함
    (생성된 것을 ndarray 객체라고 부름)
  • numpy는 하나의 데이터 type만 배열에 넣을 수 있음
  • List와 가장 큰 차이점 -> dynamic typing not supported
  • C의 Array를 사용하여 배열을 생성함

2. ndarray

1) array의 생성

a = [1,2,3,4,5]
b = [5,4,3,2,1]
a = np.array(a,int)
a
array([1, 2, 3, 4, 5])
test_array = np.array(["1","4",5,8],float) # 문자열을 넣어도 뒤의 지정해준 형식으로 변환해서 들어감
test_array
array([1., 4., 5., 8.])
  • 막간 단축키 = 코드 위에 Shift + Tap 누르면 Docstring 형식의 설명이 나옴
type(test_array)
numpy.ndarray
type(test_array[3]) # 이렇게 Float Type으로 자동 형변환을 실시
numpy.float64

2) Numpy Array와 Python List의 차이점

참고링크

Numpy는 바로 메모리 안에 지정된 공간 안에 차례대로 들어간다면,
Python 리스트는 숫자 값을 넣으면 그 값이 그대로 들어가는게 아니라,
변환된 값을 리스트에 저장함. (한번 더 들어가는 구조)

쉽게 말하자면 Numpy의 메모리 저장 구조가 단순하고, 각각 하나의 메모리 크기가 일정하기 때문에 편하고 연산이 빠르다.

밑의 예시를 보자

a = [1,2,3,4,5]
b = [5,4,3,2,1]
a = [1,2,3,4,5]
b = [5,4,3,2,1]
a[0] is b[-1]
True

이렇듯 a[0]에 해당하는 1과 b[-1]에 해당하는 1이 같다고 나온다. 변환된 값이 한 셀 안에 들어갔다고 생각하면 됨.

a = np.array(a)
b = np.array(b)
a[0] is b[-1]
False
a[1] is b[-1]
False

그러나 같은 위치에, 같은 값인 1이 np.array에서는 다른 셀 안에 차례대로 들어가있기 때문에 False가 뜬다.

3) Array creation

  • shape : numpy array의 dimension 구성을 반환함
  • dtype : numpy array의 single element가 가지는 데이터 type을 반환함
test_array.dtype # Array(배열) 전체의 Data Type을 반환함
dtype('float64')
test_array.shape # Array(배열)의 Shape을 반환함
(4,)

4) Array shape

  • array의 Rank에 따라 불리는 이름이 있음.

5) Array ndim, size, nbytes

  • ndim : number of dimensions
  • size : data의 개수 (element의 개수)
  • nbytes : ndarray object의 메모리 크기를 반환함
    ex :
    float 32 = 32bits = 4bytes/개당. (6개의 elements를 float32로 저장시 6*4bytes = 24)
    float 64 = 64bits = 8bytes/개당. (6개를 float64로 저장시 6*8 = 48)
    int8 = 8bits = 1bytes/개당. (6개를 int8로 저장시 6*1 = 6)
tensor = [
    [[1,2,5,8],[1,2,5,8],[1,2,5,8]],
    [[1,2,5,8],[1,2,5,8],[1,2,5,8]],
    [[1,2,5,8],[1,2,5,8],[1,2,5,8]],
    [[1,2,5,8],[1,2,5,8],[1,2,5,8]]
]
np.array(tensor, int).shape
(4, 3, 4)
np.array(tensor,int).ndim
3
np.array(tensor,int).size
48
np.array([[1,2,3],[4.5,"5","6"]], dtype=np.float32).nbytes
24
np.array([[1,2,3],[4.5,"5","6"]], dtype=np.float64).nbytes
48
np.array([[1,2,3],[4.5,"5","6"]], dtype=np.int8).nbytes
6
profile
오삽 : 오늘도 삽질

0개의 댓글