首页 > Python3教程 > Python扩展程序库 -- NumPy

NumPy 数据类型

NumPy 数据类型

Numpy支持比Python更多的数据类型,有5个基本数字类型表示布尔(bool)、整数(int)、无符号整数(uint)、浮点数(float)和复数。

那些在其名称中具有数字的类型表示类型的位的大小(即,需要多少位来表示存储器中的单个值)。

某些类型,例如int和intp,根据平台(例如32位与64位机器)具有不同的位大小。当与存储器直接寻址的低级代码(例如C或Fortran)接口时,应该考虑这一点。

数据类型 描述
bool_ 布尔(True或False),存储为一个字节
int_ 默认整数类型(与Clong相同;通常是int64int32
INTC 与Cint(通常为int32int64)相同
INTP 用于索引的整数(与Cssize_t相同;通常是int32int64
INT8 字节(-128至127)
INT16 整数(-32768至32767)
INT32 整数(-2147483648至2147483647)
Int64的 整数(-9223372036854775808至9223372036854775807)
UINT8 无符号整数(0到255)
UINT16 无符号整数(0到65535)
UINT32 无符号整数(0到4294967295)
UINT64 无符号整数(0到18446744073709551615)
float_ float64的简写。
float16 半精度浮点:符号位,5位指数,10位尾数
FLOAT32 单精度浮点数:符号位,8位指数,23位尾数
float64 双精度浮点:符号位,11位指数,52位尾数
complex_ complex128的简写。
complex64 复数,由两个32位浮点数(实部和虚部)
complex128 复数,由两个64位浮点数(实部和虚部)

numpy数值类型是dtype(data-type)对象的实例,每个类型具有唯一的特征。

在你导入NumPy后 import numpy as np,这些类型可以用np.bool_、np.float32等方式访问。

数据类型对象 (dtype)

数据类型对象是用来描述与数组对应的内存区域如何使用,依赖如下几个方面:

  • 数据的类型(整数,浮点数或者 Python 对象)
  • 数据的大小(例如, 整数使用多少个字节存储)
  • 数据的字节顺序(小端法或大端法)
  • 在结构化类型的情况下,字段的名称、每个字段的数据类型和每个字段所取的内存块的部分
  • 如果数据类型是子数组,它的形状和数据类型

字节顺序是通过对数据类型预先设定"<"或">"来决定的。"<"意味着小端法(最小值存储在最小的地址,即低位组放在最前面)。

">"意味着大端法(最重要的字节存储在最小的地址,即高位组放在最前面)。

dtype 对象构造函数:

numpy.dtype(object, align, copy)

  • object - 要转换为的数据类型对象
  • align - 如果为 true,填充字段使其类似 C 的结构体。
  • copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用

内建类型字符代码

字符 对应类型
b 布尔型
i (有符号) 整型
u 无符号整型 integer
f 浮点型
c 复数浮点型
m timedelta(时间间隔)
M datetime(日期时间)
O (Python) 对象
S, a (byte-)字符串
U Unicode
V 原始数据 (void)

数据类型实例

import numpy as np

# 使用标量类型
dt = np.dtype(np.int32)
print(dt) #int32

# int8, int16, int32, int64 四种数据类型使用字符串 'i1', 'i2','i4','i8' 代替
dt = np.dtype('i4')
print(dt) #int32

# 字节顺序标注
dt = np.dtype('<i4')
print(dt) #int32

结构化数据类型实例

import numpy as np

# 创建结构化数据类型
dt = np.dtype([('age',np.int8)])
print(dt) #[('age', 'i1')]

# 将数据类型应用于 ndarray 对象
a = np.array([(10,),(20,),(30,)], dtype = dt)
print(a) #[(10,) (20,) (30,)]

# 类型字段名可以用于存取实际的 age
print(a['age']) #[10 20 30]


#结构化数据类型 student,包含字符串字段 name,整数字段 age,及浮点字段 marks
# 并将这个 dtype 应用到 ndarray 对象
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])
print(student) #[('name', 'S20'), ('age', 'i1'), ('marks', '<f4')]

a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student)
print(a) #[(b'abc', 21, 50.) (b'xyz', 18, 75.)]
关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。