NumPy - 数据类型

NumPy 支持比 Python 更多种类的数值类型。 下表显示了 NumPy 中定义的不同标量数据类型。

序号

数据类型及描述

bool_ 存储为一个字节的布尔值(真或假)

int_ 默认整数,相当于 C 的long,通常为int32int64

intc 相当于 C 的int,通常为int32int64

intp 用于索引的整数,相当于 C 的size_t,通常为int32int64

int8 字节(-128 ~ 127)

int16 16 位整数(-32768 ~ 32767)

int32 32 位整数(-2147483648 ~ 2147483647)

int64 64 位整数(-9223372036854775808 ~ 9223372036854775807)

uint8 8 位无符号整数(0 ~ 255)

uint16 16 位无符号整数(0 ~ 65535)

uint32 32 位无符号整数(0 ~ 4294967295)

uint64 64 位无符号整数(0 ~ 18446744073709551615)

float_ float64的简写

float16 半精度浮点:符号位,5 位指数,10 位尾数

float32 单精度浮点:符号位,8 位指数,23 位尾数

float64 双精度浮点:符号位,11 位指数,52 位尾数

complex_ complex128的简写

complex64 复数,由两个 32 位浮点表示(实部和虚部)

complex128 复数,由两个 64 位浮点表示(实部和虚部)

NumPy 数字类型是dtype(数据类型)对象的实例,每个对象具有唯一的特征。 这些类型可以是np.bool_np.float32

数据类型对象 (dtype)

数据类型对象描述了对应于数组的固定内存块的解释,取决于以下方面:

  • 数据类型(整数、浮点或者 Python 对象)
  • 数据大小
  • 字节序(小端或大端)
  • 在结构化类型的情况下,字段的名称,每个字段的数据类型,和每个字段占用的内存块部分。
  • 如果数据类型是子序列,它的形状和数据类型。

字节顺序取决于数据类型的前缀<>。 <意味着编码是小端(最小有效字节存储在最小地址中)。 >意味着编码是大端(最大有效字节存储在最小地址中)。

import numpy as np

# numpy.dtype(self, obj, align=False, copy=False)
‘’’
obj : 被转换为数据类型的对象。
align: 如果为true,则向字段添加间隔,使其类似 C 的结构体
copy : 生成dtype对象的新副本,如果为flase,结果是内建数据类型对象的引用。
‘’’
dt1 = np.dtype(np.int32) # 使用数组标量类型
dt2 = np.dtype(‘i4’) # int8,int16,int32,int64 可替换为等价的字符串 ‘i1’,‘i2’,‘i4’,以及其他
dt3 = np.dtype(‘>i4’) # 使用端记号
dt4 = np.dtype([(‘age’, np.int8)]) # 创建结构化数据类型
arr = np.arange(5)
dt5 = arr.astype(np.float64) # 数据类型转换 !!!不能使用 arr.dtype = ‘float64’!!!
ndarray1 = np.array([(10,), (20,), (30,)], dtype=dt4) # 应用于 ndarray 对象
studentdt = np.dtype([(‘name’, ‘S20’), (‘age’, ‘i1’), (‘marks’, ‘f4’)])
student = np.array([(‘abc’, 21, 50), (‘xyz’, 18, 75)], dtype=studentdt)
print(dt5)
print(ndarray1[‘age’])
print(studentdt)
print(student[‘name’])

每个内建类型都有一个唯一定义它的字符代码:

  • 'b':布尔值
  • 'i':符号整数
  • 'u':无符号整数
  • 'f':浮点
  • 'c':复数浮点
  • 'm':时间间隔
  • 'M':日期时间
  • 'O':Python 对象
  • 'S', 'a':字节串
  • 'U':Unicode
  • 'V':原始数据(void

代码 Github地址:https://github.com/shadowagnoy/python_learn/

参考文档:https://docs.scipy.org/doc/numpy/reference/routines.html

参考文档:https://www.tutorialspoint.com/numpy/index.htm