본문 바로가기
Python/NumPy

NumPy의 데이터 타입(자료형), 관련된 함수 - NumPy(2)

by 콩돌 2019. 1. 15.
반응형

참고 자료

https://docs.scipy.org/doc/numpy/user/basics.types.html



파이썬 버전 3.7 기준

NumPy 버전 1.15 기준


본 포스팅에선 NumPy의 주요 자료형인 정수(int), 부호없는 정수(uint), 실수(float), 복소수(complex), 논리(bool)을 설명한다.


NumPy의 자료형


NumPy는 수치해석을 위한 라이브러리인만큼 숫자형 자료형에 대해서는 파이썬 내장 숫자자료형에 비해 더욱더 자세히 나누어놓은 자료형들이 존재한다.


NumPy에서의 자료형


NumPy에서는 제공하는 숫자형 자료형의 종류는 정수(int), 부호없는 정수(uint), 실수(float), 복소수(complex), 논리(bool)로 총 5가지로 나뉜다.

자료형뒤에 숫자는 일반적으로 bit수(memory)를 의미한다.

아래에 설명하는 데이터 타입들은 전부 자료형 정의 및 변경을 위한 함수로써 사용이 가능하다.


정수형 자료형

  ○ NumPy에서 제공하는 정수형 자료형은 크게 2가지로 나뉜다.

    ▷ int는 음수와 양수를 다 아우르는 정수형 자료형이다.

    ▷ uint는 0을 포함한 양수를 혹은 부호없는 정수를 제공하는 자료형이다.

  ○ NumPy에서 사용하는 정수형 자료형에 대한 설명이 다음 표와 같이 제시되어 있다.

    ▷ 기본적으로 int나 uint 뒤에 오는 숫자는 bit의 개수를 의미한다. (bit는 0과 1만 존재하는 컴퓨터에서 가장 작은 단위의 자료형이다.)
    ▷ 예를들어, 뒤에 숫자가 8이면 2^8개 만큼의 정수를 표현하는 것이 가능하다.


데이터 타입

설명

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의 자료형을 정의하는 방법을 보여주는 예제들이다. 

    ▷ 파이썬의 기본 내장 숫자형 자료형과 시퀀스형 자료형들은 손쉽게 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


반응형

댓글