준비하는 대학생

[python] Numpy 기초 지식 공부(데이터 타입 확인 및 변경) 본문

Programming/Machine learning

[python] Numpy 기초 지식 공부(데이터 타입 확인 및 변경)

Bangii 2023. 3. 6. 02:32

이번에 새 학기가 시작하고 대학교에서 기계학습을 공부하기 전에 이전에 배운 python numpy 기초를 정리하고 공부하기 위해 작성하였다.

넘파이(Numpy)를 왜 사용하는가?

 

python에 기본적으로 list가 존재한다. 

list에는 어떠한 형태의 원소도 삽입할 수 있어 간편하게 사용할 수 있는 장점이 있다. 

하지만, 이러한 장점으로 인해 속도가 매우 느리다는 단점이 있다. 

이러한 단점을 극복하기 위해 numpy 라이브러리를 주로 사용한다. 

 

리스트 vs 넘파이

넘파이와 리스트의 자료처리 속도를 비교해보자.

 

import time
start = time.time()
nums = range(1000000)
b = [i**4 for i in nums]
end = time.time()
print(end - start)

 

위 코드는 0부터 999,999까지의 숫자를 갖고 있는 리스트로부터 값을 네 제곱하여 리스트 형태로 만드는 데 걸리는 시간을 출력한다.

결과는 현재 내 맥북에서는 약 0.072의 시간이 출력되었다. 

이제 넘파이로 같은 로직을 수행해 보자.

 

import numpy as np
start = time.time()
numpy_nums = np.arange(1000000)
test = numpy_nums**4
end = time.time()
print(end - start)

 

위 코드의 결과는 약 0.0096의 시간이 출력되었다. 

위 두 코드의 출력을 비교하면 넘파이를 사용하는 것이 매우 빠르다는 것을 알 수 있다. 

이처럼 넘파이가 리스트보다 훨씬 빠른 이유는 넘파이는 파이썬언어로 사용하는 것이 아니라 C로 컴파일된 모듈을 사용하기 때문에 속도측면에서 리스트보다 매우 유리하다.

속도만의 장점뿐만 아니라 넘파이는 많은 머신러닝 프로그램의 입출력의 형태로도 사용하기 때문에 기계학습을 공부하면서 주로 사용될 것이다.

 

넘파이의 데이터 타입 확인 및 변경

넘파이는 파이썬의 리스트와 달리 단일 타입형태의 원소만 취급한다. 따라서 넘파이의 타입을 확인하고 변경하는 것은 매우 기본적이다.

 

넘파이 데이터 타입 종류

Integer
int8, int16, int32 등
unsigned integer
uint8, uint16, uint32 등
float
float16, float32, float64 등
boolean
bool
string str

데이터 타입을 확인할 때 반환되는 데이터 종류는 위 테이블과 같다.

넘파이 데이터 타입을 확인하기 위해서는 dtype을 사용한다.

확인하고 싶은 넘파이 배열의 dtype을 붙여 사용한다. (ex numpy_arr.dtype)

 

만약 내가 넘파이 타입이 integer인데 bool타입으로 변경하고자 할 때에는 astype을 이용하여 변경할 수 있다.

해당 넘파이 배열에 astype(변경한 dtype 종류)를 붙여 사용한다. 

 

array = np.array([0, 0, 1])
array = array.astype('bool')
print(array.dtype, array)

 

위 코드의 출력 결과는 "bool [ False False True]"로 나온다.

위 코드를 살펴보면 원래 [0,0,1] 형태의 배열이 bool 형태로 dtype을 변환되어 0은 False로 1은 True로 형태가 변환한 것이다. 

 

다음 게시글에 이어서 정리하도록 하겠다.

'Programming > Machine learning' 카테고리의 다른 글

[NumPy] unique 함수  (0) 2023.03.14
[NumPy] 인덱싱  (2) 2023.03.13
[NumPy] reshape 함수  (0) 2023.03.13
[python] Numpy 기초 공부(zeros, ones, full)  (0) 2023.03.08
[python] Numpy 기초 지식 공부(arange, linspace)  (2) 2023.03.07
Comments