NumPy 데이터 타입 탐구

Beginner

소개

이 랩에서는 Python 의 NumPy 라이브러리에 있는 데이터 유형 (datatype) 을 다룹니다. dtype 객체 구문과 매개변수를 살펴봅니다.

VM 팁

VM 시작이 완료되면, 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 실습을 위한 Jupyter Notebook에 접근하십시오.

때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한 사항으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.

학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.

NumPy dtype 객체 이해

NumPy 에서 배열의 모든 항목은 데이터 유형 객체(data type object) 이며, 이는 NumPy dtype라고도 합니다. 데이터 유형 객체는 배열에 해당하는 메모리의 고정 크기를 구현하는 데 사용됩니다.

주로 다음 정보에 대한 정보를 제공합니다.

  • 데이터 유형(예: integer, float, 또는 Python object)
  • 데이터 크기
  • 바이트 순서(little-endian 또는 big-endian)
  • 구조화된 유형의 경우, 필드 이름, 각 필드의 데이터 유형, 그리고 각 필드가 차지하는 메모리 블록의 일부에 대해 알려줍니다.
  • 데이터 유형이 하위 배열인 경우, 해당 모양과 데이터 유형에 대해 알려줍니다.

NumPy dtype 객체 생성

dtype 객체를 생성하는 데 사용되는 필수 구문은 다음과 같습니다.

numpy.dtype(object, align, copy)

위에서 언급한 생성자의 인수에 대한 설명은 다음과 같습니다.

  • object: 이 인수는 데이터 유형으로 변환할 객체를 나타내는 데 사용됩니다.
  • align: 선택적 인수입니다. C 컴파일러가 유사한 C-struct 에 대해 출력하는 내용과 일치하도록 필드에 패딩을 추가하는 데 사용됩니다. 이 인수는 모든 boolean 값으로 설정할 수 있습니다.
  • copy: 이 인수는 dtype 객체의 복사본을 생성하는 데 사용되며, 또한 선택적 인수입니다.

NumPy 의 숫자 데이터 타입

NumPy 라이브러리는 주로 Python 에서 제공하는 것보다 더 많은 범위의 숫자 데이터 유형을 제공합니다. 숫자 데이터 유형 목록은 아래 표에 나와 있습니다.

SN 데이터 유형 설명
1 bool_ 참 또는 거짓을 나타내는 부울 값을 나타내는 데 사용됩니다. 바이트로 저장됩니다.
2 int_ 이것은 정수의 기본 유형입니다. C 의 long 유형과 동일하며 주로 64 비트 또는 32 비트 정수를 포함합니다.
3 intc 32 비트 또는 64 비트 int 를 나타내므로 C 정수 (C int) 와 유사합니다.
4 intp 인덱싱에 사용되는 정수를 나타내는 데 사용됩니다.
5 int8 바이트와 동일한 8 비트 정수입니다. 값의 범위는 -128 에서 127 입니다.
6 int16 2 바이트 (16 비트) 정수이며 범위는 -32768 에서 32767 입니다.
7 int32 4 바이트 (32 비트) 정수입니다. 범위는 -2147483648 에서 2147483647 입니다.
8 int64 8 바이트 (64 비트) 정수이며 범위는 -9223372036854775808 에서 9223372036854775807 입니다.
9 uint8 1 바이트 (8 비트) 부호 없는 정수입니다.
10 uint16 2 바이트 (16 비트) 부호 없는 정수입니다.
11 uint32 4 바이트 (32 비트) 부호 없는 정수입니다.
12 uint64 8 바이트 (64 비트) 부호 없는 정수입니다.
13 float_ 이것은 float64와 동일합니다.
14 float16 반정밀도 부동 소수점을 나타내는 데 사용됩니다. 지수에 5 비트가 예약되어 있습니다. 가수에는 10 비트가 예약되어 있고, 부호에는 1 비트가 예약되어 있습니다.
15 float32 단정밀도 부동 소수점을 나타내는 데 사용됩니다. 지수에 8 비트가 예약되어 있고, 가수에는 23 비트가 예약되어 있으며, 부호에는 1 비트가 예약되어 있습니다.
16 float64 배정밀도 부동 소수점을 나타내는 데 사용됩니다. 지수에 11 비트가 예약되어 있고, 가수에는 52 비트가 예약되어 있으며, 부호에는 1 비트가 사용됩니다.
17 complex_ 이것은 complex128과 동일합니다.
18 complex64 실수부와 허수부가 각각 32 비트를 공유하는 복소수를 나타내는 데 사용됩니다.
19 complex128 실수부와 허수부가 각각 64 비트를 공유하는 복소수를 나타내는 데 사용됩니다.

NumPy dtype 표현에 사용되는 문자

다음은 NumPy 에서 dtype을 나타내는 데 사용되는 문자 목록입니다.

  • i: 정수 (integer)
  • b: 부울 (boolean)
  • u: 부호 없는 정수 (unsigned integer)
  • f: 부동 소수점 (float)
  • c: 복소수 부동 소수점 (complex float)
  • m: 시간 델타 (timedelta)
  • M: 날짜 및 시간 (datetime)
  • O: 객체 (object)
  • S: 문자열 (string)
  • U: 유니코드 문자열 (Unicode string)
  • V: 다른 유형에 대한 고정된 메모리 청크 (void)

예시

예제 1: 배열의 데이터 유형 찾기

문자열을 포함하는 배열의 데이터 유형을 찾아보겠습니다.

import numpy as np

ar1 = np.array(['chair', 'book', 'notebook'])
print(ar1.dtype)

출력:

<U8

예제 2: dtype 객체 구성

numpy.dtype 함수를 사용하여 dtype 객체를 생성할 수 있습니다.

import numpy as np

dt1 = np.dtype(np.int64)
print (dt1)

출력:

int64

예제 3: 숫자 데이터 유형의 짧은 표현 사용

다음 예제에서는 숫자 데이터 유형의 짧은 표현을 사용합니다.

import numpy as np

a = np.dtype('i4')
print (a)

출력:

int32

예제 4: 구조화된 dtype 객체 생성

구조화된 데이터 유형을 생성하고 이를 ndarray 객체에 적용합니다.

import numpy as np

## info with key and value
a = np.dtype([('rollno',np.int16)])
print(a)

a = np.array([(101,),(201,),(301,)], dtype=a)
print(a)

출력:

[('rollno', '<i2')]
[(101,) (201,) (301,)]

예제 5: 데이터 유형 변경

다음 예제에서는 int를 매개변수 값으로 사용하여 데이터 유형을 float에서 integer로 변경합니다.

import numpy as np

ar= np.array([1.1, 2.1, 3.1])

newarr = ar.astype(int)

print(newarr)
print(newarr.dtype)

출력:

[1 2 3]
int64

요약

이 랩에서는 배열의 데이터 유형 개념을 다루었습니다. dtype 객체가 값의 데이터 유형을 지정하는 방법, 구문 및 dtype 객체에 필요한 매개변수를 살펴보았습니다. 또한 다양한 숫자 데이터 유형과 이해를 돕기 위한 몇 가지 예제를 다루었습니다.