English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
NumPy 데이터 타입 설명 및 예제
데이터 타입, 즉 dtype,는 특별한 객체이며 ndarray가 특정 데이터 타입에 대한 메모리 블록 정보를 포함하고 있습니다(이를 메타데이터라고도 합니다. 데이터를 나타내는 데이터). dtype는 NumPy가 다른 시스템과 데이터를 유연하게 상호작용할 수 있는 이유입니다. 일반적으로 다른 시스템은 하드디스크나 메모리와 데이터의 대응 관계를 제공하여 C나 Fortran과 같은 하위 언어로 데이터를 읽고 쓰는 것을 매우 쉽게 합니다.
NumPy가 지원하는 데이터 타입은 더 많습니다. Python 내장 데이터 타입많이 많습니다. 일반적으로 C 언어의 데이터 타입과 일치하며, 일부 타입은 Python 내장 타입과 일치합니다. 다음 표는 일반 NumPy 기본 타입을 나열합니다.
이름 | 설명 |
int_ | 기본 정수 타입(类似于 C 언어의 long, int와 동일합니다)32 또는 int64) |
int8 | 바이트(-128 to 127) |
int16 | 정수(-32768 to 32767) |
int32 | 정수(-2147483648 to 2147483647) |
int64 | 정수(-9223372036854775808 to 9223372036854775807) |
intc | C의 int 타입과 동일하며, 일반적으로 int입니다32 또는 int 64 |
intp | 인덱싱에 사용되는 정수 타입(类似于 C의 ssize_t, 일반적으로는 int입니다)32 또는 int64) |
uint8 | 없음 체 정수(0 to 255) |
uint16 | 없음 체 정수(0 to 65535) |
uint32 | 없음 체 정수(0 to 4294967295) |
uint64 | 없음 체 정수(0 to 18446744073709551615) |
float_ | float64 타입의 약자 |
float16 | 하프 프리미엄 플로팅 포인트, 포함됩니다:1 개의 부호 자리5 개의 지수 자리10 개의 소수점 자리 |
float32 | 싱글 프리미엄 플로팅 포인트, 포함됩니다:1 개의 부호 자리8 개의 지수 자리23 개의 소수점 자리 |
float64 | 더블 프리미엄 플로팅 포인트, 포함됩니다:1 개의 부호 자리11 개의 지수 자리52 개의 소수점 자리 |
complex_ | complex128 타입의 약자, 즉 128 비트 복소수 |
complex64 | 복소수, 두 배 32 비트 실수(실수 부분과虚수 부분) |
complex128 | 복소수, 두 배 64 비트 실수(실수 부분과虚수 부분) |
bool_ | 부울 데이터 타입(True 또는 False) |
NumPy의 dtype를 기억하지 못해도 괜찮습니다. 초보자에게는 더욱 그렇습니다. 일반적으로 처리하는 데이터의 유형이 실수, 복소수, 정수, 부울 값, 문자열 또는 일반 Python 객체인지만 알면 됩니다. 메모리와 디스크에서 데이터의 저장 방식을 제어해야 할 때(특히 대규모 데이터 셋에 대해)에는 저장 타입을 제어하는 방법을 알아야 합니다.
NumPy의数值형은 dtype 객체의 인스턴스이며, 고유한 문자와 일치하며, np.bool_와 np.int를 포함합니다.32np.float32등입니다.
데이터 타입 객체는 배열과 일치하는 메모리 영역이 어떻게 사용되는지 설명하는 데 사용되며, 다음과 같은 몇 가지 요소에 따라 달라집니다:
데이터의 타입 - 예를 들어, 실수, 복소수, 정수, 부울 값, 문자열 또는 Python 객체.데이터의 크기 - 예를 들어, 정수는 몇 개의 바이트를 저장합니다.데이터의 바이트 순서 - 리얼 엔드 방식 또는 리얼 엔드 방식
바이트 순서는 데이터 타입을 미리 설정한 "<" 또는 ">"에 의해 결정됩니다. "<"은 리얼 엔드 방식(최소 값이 가장 작은 주소에 저장됨, 즉 낮은 비트 그룹이 앞에 위치함)을 의미합니다. ">"은 리얼 엔드 방식(가장 중요한 바이트가 가장 작은 주소에 저장됨, 즉 높은 비트 그룹이 앞에 위치함)을 의미합니다.
dtype 객체는 다음 문법으로 구성됩니다:
numpy.dtype(object, align, copy)
object - 要转换为的数据类型对象align - 如果为 true,填充字段使其类似 C 的结构体。copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用
接下来我们可以通过实例来理解。
>>> import numpy as np >>> a = np.dtype(np.float32) >>> print(a) float32
# int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8''代替 >>> import numpy as np >>> a = np.dtype('i8')] >>> print(a) int64
下面实例展示结构化数据类型的使用,类型字段和对应的实际类型将被创建。
>>> import numpy as np >>> a = np.dtype([('number', np.int16)] # 数据类型应用于 ndarray 对象 >>> print(a) [('number', '<i2')] >>> arr = np.array([(1,)2,)3([( >>> print(arr) ,)1,)2,)3>>> print(arr['number']) # 类型字段名可以用于存取实际的 number 列 下面的示例定义一个结构化数据类型animal,包含字符串字段 name,整数字段 age,及浮点字段 marks,并将这个 dtype 应用到 ndarray 对象。 [1 2 3]
>>> import numpy as np '), ('marks', '21')]4 [('name', ' 21'), ('marks', ' <f4')] >>> a = np.array([('cat', 5, 10),(('dog', 4, 35),(('lion',8,18]), dtype = animal) >>> print(a) [(b'cat', 5, 10). (b'dog', 4, 35). (b'lion', 8, 18).]
使用astype方法可以显式的转换数组的数据类型,具体实例如下:
>>> import numpy as np >>> arr = np.array([1,2,3,4,5]) >>> print(arr.dtype) int64 >>> print(arr) [1 2 3 4 5] >>> float_arr = arr.astype('float32') # 也以写作 arr.astype(np.float32) >>> print(float_arr.dtype) float32 >>> print(float_arr) [1. 2. 3. 4. 5.]
다른 배열의 dtype를 사용하여 데이터 타입을 변환할 수도 있습니다. 구체적인 예제는 다음과 같습니다:
>>> import numpy as np >>> int_arr = np.arange(10) >>> calibers = np.array([.22,270.,357], dtype=np.float64) >>> print(calibers) [0.22 0.27 0.357] >>> arr_last = int_arr.astype(calibers.dtype) >>> print(arr_last.dtype) float64 >>> print(arr_last) [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
각 내장 타입은 고유한 문자 코드로 정의됩니다. 예를 들어:
문자 | 해당 타입 |
b | 부울형 |
i | (정의된) 정수형 |
u | 미리정의된 정수형 integer |
f | 실수형 |
c | 가상 실수형 |
m | timedelta(시간 간격) |
M | datetime(날짜 시간) |
O | (Python) 객체 |
S, a | (바이트-) 문자열 |
U | Unicode |
V | 원본 데이터 (void) |