본문 바로가기
머신러닝 딥러닝

0816 Numpy

by 대금부는개발자 2021. 8. 16.
SMALL

이번에는 Numpy에 대해서 알아보아요.
python의 numpy module은 vector(1차원)와 matrix(2차원) 연산에 있어서 상당한 편의성을 제공하는 모듈
Machine Learning과 Deep Learning의 기본 Moudle

Numpy설치


아나콘다 conda install numpy 
주피터 노트북!  conda install numpy 

python의 대표적인 데이터 타입(자료구조)
list, tuple, range, dict, set

numpy는 새로운 데이터 타입을 하나 이용해요!
ndarray(n-dimensional array)


ndarray의 특징


1. python의 list와 상당히 유사하게 생겼어요.
python의 list는 각기 다른 데이터 타입을 저장할 수 있어요! ex) a = [1, True, 'Hello', 3.14]
하지만 ndarray는 동일한 데이터 타입만 사용할 수 있어요!
list와 상당히 유사하지만 수학적 계산 속도면에서 비교가 불가능할 정도로 ndarray가 빠르고 효율적이에요.

 

 

import numpy as np

a = [1, 2, 3, 4]

print(type(a)) # <class 'list'>
print(a)  #[]를 사용하고 원소의 구분을, 로 해요
print(type(a[0])) # <class 'int>'

b = np.array([1, 2, 3, 4]) # ndarray를 만들어내는 가장 대표적인 방법.
print(type(b)) # <class 'numpy.ndarray'>
print(b) # [ 1 2 3 4 ]   list와 상당히 유사하지만 요소의 구분을 space로 해요!
print(type(b[0])) # <class 'numpy.int32'>

c = np.array([1, 2, 3.14, 4])
print(c)   #[1.   2.   3.14 4.  ] 실수(float)로 바뀌어요
print(type(c[0])) # <class 'numpy.float64'>

d = np.array([1, 2, 3.14, 4], dtype=np.int32) #dtype으로 데이터 타입을 정할 수 있어요.
print(c)   #[1 2 3 4]
print(type(c[0])) # <class 'numpy.int32'>

 

 

 

import numpy as np

a = [1, 3.14, True, 'Hello']
b = np.array(a)
print(b) #['1' '3.14' 'True' 'Hello']
#이렇게 하면 문자열로 바꿔 동일한 데이터 타입으로 변환, 하지만 이런 경우는 거의 사용하지 않아요.

 

import numpy as np

a = [[1, 2, 3], [4, 5, 6]] #리스트안에 리스트 → 중첩 리스트 → 하지만 2차원이라고 부르지는 않아요.

b = np.array(a, dtype=np.float64)
    
print(b)    [[1. 2. 3.]  2차원
             [4. 5. 6.]]

print(b[1,1]) #5.0 → 행과 열을 같이 명시를 해줘요 해요 단 0부터 시작해요 


ndarray의 속성 몇가지만 알아보아요!

print(b.dtype) #float64
print(b.ndim) # 2 → n은 숫자 dim은 차원의 약자 ndim(차원의 수), 그다지 많이 사용되지 않아요.
print(b.shape) # (2, 3) → 결과가 tuple로 나와요, tuple의 요소의 수가 차원의 개수예요. 요소의 수는 2개 2차원 메트릭스, 2는 행의 수 3은 열의 수

a = [1, 2, 3, 4, 5]
print(np.array(a).shape) # (5,) 1차원 벡터

a =[[[1,2],[3,4]],[[5,6],[7,8]]] 
print(np.array(a))  #[[[1 2]
                       #[3 4]]


                       #[[5 6]
                      #[7 8]]]
print(np.array(a).shape)#(2, 2, 2) 3차원 → 면 행 렬 

 

 

import numpy as np

a = [1, 2, 3, 4] #list
arr = np.array(a) #int32형태의 ndarray(vector)가 생성
print(arr) # [1 2 3 4]
print(arr.shape) # (4,)


shape을 바꿔줘서 data 차원을 Handling 할 수 있어요.

arr.shape = (2, 2)     #2차원(matrix)
print(arr) # [[1 2] 
           # [3 4]]
    
arr.shape = (4, 1, 1)  #3차원
print(arr)  # [[[1]]

            #[[2]]

            # [[3]]

            #[[4]]]
print(arr.size) # 4 → size는 요소의 개수를 알려줘요


arr.shape = (3,2,1) # 3면 2행, 1열로 표현하려면 요소가 6개 있어야 하기 때문에 오류가 나요.

 

 


data type을 바꾸려면 어떻게 해야 하나요??

import numpy as np

a = [1, 2, 3, 4, 5, 6]

arr = np.array(a, dtype=np.float64)

print(arr)  [1. 2. 3. 4. 5. 6.]
 
#int32형태의 ndarray로 변경하고 싶어요!

result = arr.astype(np.int32) # astype()
print(result) # [1 2 3 4 5 6]

LIST

'머신러닝 딥러닝' 카테고리의 다른 글

0818 Numpy 6  (0) 2021.08.18
0817 Numpy5  (0) 2021.08.17
0817 Numpy4  (0) 2021.08.17
0816 Numpy 3  (0) 2021.08.16
0816 Numpy2  (0) 2021.08.16

댓글