NumPy 数据类型
2019-02-24 10:26:23
•
阅读
打赏
NumPy 数据类型
Numpy支持比Python更多的数据类型,有5个基本数字类型表示布尔(bool)、整数(int)、无符号整数(uint)、浮点数(float)和复数。
那些在其名称中具有数字的类型表示类型的位的大小(即,需要多少位来表示存储器中的单个值)。
某些类型,例如int和intp,根据平台(例如32位与64位机器)具有不同的位大小。当与存储器直接寻址的低级代码(例如C或Fortran)接口时,应该考虑这一点。
| 数据类型 | 描述 |
|---|---|
bool_ |
布尔(True或False),存储为一个字节 |
int_ |
默认整数类型(与Clong相同;通常是int64或int32) |
| INTC | 与Cint(通常为int32或int64)相同 |
| INTP | 用于索引的整数(与Cssize_t相同;通常是int32或int64) |
| 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.)]

相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型