참고 자료
https://docs.scipy.org/doc/numpy/user/basics.types.html
파이썬 버전 3.7 기준
NumPy 버전 1.15 기준
본 포스팅에선 NumPy의 주요 자료형인 정수(int), 부호없는 정수(uint), 실수(float), 복소수(complex), 논리(bool)을 설명한다.
NumPy의 자료형
NumPy에서의 자료형
NumPy에서는 제공하는 숫자형 자료형의 종류는 정수(int), 부호없는 정수(uint), 실수(float), 복소수(complex), 논리(bool)로 총 5가지로 나뉜다.
자료형뒤에 숫자는 일반적으로 bit수(memory)를 의미한다.
아래에 설명하는 데이터 타입들은 전부 자료형 정의 및 변경을 위한 함수로써 사용이 가능하다.
정수형 자료형
○ NumPy에서 제공하는 정수형 자료형은 크게 2가지로 나뉜다.
▷ int는 음수와 양수를 다 아우르는 정수형 자료형이다.
▷ uint는 0을 포함한 양수를 혹은 부호없는 정수를 제공하는 자료형이다.
○ NumPy에서 사용하는 정수형 자료형에 대한 설명이 다음 표와 같이 제시되어 있다.
데이터 타입 |
설명 |
int_ |
- 정수형 자료형 기본값 - C언어에서 long과 같다. - 일반적으로 int64나 int32이다. |
intc |
- C언어 int와 동일하다. - 일반적으로 int32와 int64이다. |
intp |
- 인덱싱에 사용되는 정수형이다. - C언어에서 ssize_t와 동일하다. - 일반적으로 int32나 int64이다. |
int8 |
- 1바이트 만큼의 정수 표현이 가능하다. - 즉, 2^8 개수 만큼 표현이 가능하다. - -128 ~ 127 |
int16 |
- 2^16개수 만큼 표현이 가능하다. - -32,768 ~ 32,767 |
int32 |
- 2^32개수 만큼 표현이 가능하다. - -2,147,483,648 ~ 2,147,483,647 |
uint8 |
- 양수만 표현이 가능하다. - 2^8개수 만큼 표현이 가능하다. - 0 ~ 255 |
uint16 |
- 2^16개수 만큼 표현이 가능하다. - 0 ~ 65,535 |
uint32 | - 2^32개수 만큼 표현이 가능하다. - 0 ~ 4,294,967,295 |
uint64 | - 2^64개수 만큼 표현이 가능하다. - 0 ~ 18,446,744,073,709,551,615 |
※ intc에 대해서는 C의 정수 타입인 short, long, longlong, 부호없는 버전에 좌우되어 플랫폼이 정의된다.
실수형 자료형
○ 아래 표는 NumPy에서 실수형 자료형을 보여준다.
▷ 자료형 뒤에 숫자는 정수와 마찬가지로 bit수를 의미한다.
데이터 타입 | 설명 |
float_ | - float64의 약칭이다. |
float16 | - 반정밀도(Half precision)를 가지는 실수형 자료형이다. - 5 bit의 지수와, 10 bit의 소수로 구성된다. |
float32 | - 단정밀도(Single precision)를 가지는 실수형 자료형이다. - 8 bit의 지수와, 23 bit의 소수로 구성된다. |
float64 | - 배정밀도(Double precision)를 가지는 실수형 자료형이다. - 11 bit의 지수와, 52 bit의 소수로 구성된다. |
복소수형 자료형
○ 다음 표는 복소수형 자료형을 보여주며 숫자의 의미는 정수, 실수와 같다.
데이터 타입 | 설명 |
complex_ | - complex128의 약칭이다. |
complex64 | - 실수부분과 허수부분에 각각 floalt32의 자료형을 가진다. |
complex128 | - 실수부분과 허수부분에 각각 floalt64의 자료형을 가진다. |
논리형 자료형
○ NumPy는 논리형 자료형도 취급하며 다음 표에 설명되어 있다.
데이터 타입 | 설명 |
bool_ 혹은 bool | - 하나의 바이트로 거짓(False)과 참(True)을 표현한 자료형이다. |
NumPy 자료형과 관련된 함수/메서드
○ 위에 설명한 자료형과 관련된 함수 말고도 자료형을 확인하거나 변경시킬 수 있는 함수가 존재한다.
함수 | 사용 예 |
설명 |
dtype | x.dtype |
- 변수 x의 자료형을 출력한다. |
astype() | x.astype(dtype) |
- 변수 x를 dtype의 자료형으로 변경하여 출력한다. |
issubtype( , ) | np.issubdtype(dtype, upperdtype) |
- 자료형 dtype이 upperdatatype의 하위자료형이면 참(True)을 아니면 거짓(False)를 출력한다. |
NumPy에서의 자료형 사용 예제
NumPy 불러오기
○ 파이썬에서 NumPy를 사용하기 위해서는 NumPy를 다음과 같이 import해야한다.
▷ 다음 import는 numpy 라이브러리를 불러오는데 이름을 np로 부르겠다는 의미이다.
▷ 꼭 np일 필요는 없지만 관용적으로 numpy를 불러올 때에는 np로 불러온다. (가독성을 위해 np로 불러오는 것이 권장된다.)
import numpy as np
NumPy 자료형 사용하기
▷ 파이썬의 기본 내장 숫자형 자료형과 시퀀스형 자료형들은 손쉽게 NumPy의 자료형으로 변경이 가능하다.
▷ arange함수를 통해 손쉽게 배열을 작성할 수 있다.
# numpy import 수행
In[2]: import numpy as np
# float 타입 스칼라 정의
In[3]: x = np.float32(5)
In[4]: x
Out[4]: 5.0
In[5]: x.dtype
Out[5]: dtype('float32')
# int 타입 배열 정의
In[6]: y = np.int_([1,2,3,4])
In[7]: y
Out[7]: array([1, 2, 3, 4])
In[8]: y.dtype
Out[8]: dtype('int32')
# uint 타입 0에서 9까지의 배열 정의
In[9]: z = np.arange(10, dtype=np.uint8)
In[10]: z
Out[10]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=uint8)
In[11]: z.dtype
Out[11]: dtype('uint8')
# uint 타입에서 float 타입으로 변경
In[12]: zz = z.astype(float)
In[13]: zz
Out[13]: array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
In[14]: zz.dtype()
In[15]: zz.dtype
Out[15]: dtype('float64')
# zz 자료형의 확인
np.issubdtype(zz.dtype, np.floating)
Out[21]: True
np.issubdtype(zz.dtype, np.integer)
Out[22]: False
'Python > NumPy' 카테고리의 다른 글
NumPy(넘파이)에서의 indexing(인덱싱) - NumPy(6) (0) | 2019.02.08 |
---|---|
genfromtxt을 통한 배열(array) 생성 상세 - NumPy(5) (0) | 2019.02.03 |
genfromtxt을 통한 배열(array) 생성 기초 - NumPy(4) (0) | 2019.02.02 |
넘파이 함수를 이용한 배열(array)의 생성 - NumPy(3) (0) | 2019.01.16 |
넘파이(NumPy) 개요 - NumPy(1) (0) | 2019.01.13 |
댓글