4-NumPy数据类型

NumPy数据类型

NumPy 作为 Python 的扩展包,它提供了比 Python 更加丰富的数据类型,如表 1 所示:

序号数据类型语言描述
1bool_布尔型数据类型(True 或者 False)
2int_默认整数类型,类似于 C 语言中的 long,取值为 int32 或 int64
3intc和 C 语言的 int 类型一样,一般是 int32 或 int 64
4intp用于索引的整数类型(类似于 C 的 ssize_t,通常为 int32 或 int64)
5int8代表与1字节相同的8位整数。值的范围是-128到127。
6int16代表 2 字节(16位)的整数。范围是-32768至32767。
7int32代表 4 字节(32位)整数。范围是-2147483648至2147483647。
8int64表示 8 字节(64位)整数。范围是-9223372036854775808至9223372036854775807。
9uint8代表1字节(8位)无符号整数。
10uint162 字节(16位)无符号整数。
11uint324 字节(32位)的无符号整数。
12uint648 字节(64位)的无符号整数。
13float_float64 类型的简写。
14float16半精度浮点数,包括:1 个符号位,5 个指数位,10个尾数位。
15float32单精度浮点数,包括:1 个符号位,8 个指数位,23个尾数位。
16float64双精度浮点数,包括:1 个符号位,11 个指数位,52个尾数位。
17complex_复数类型,与 complex128 类型相同。
18complex64表示实部和虚部共享 32 位的复数。
19complex128表示实部和虚部共享 64 位的复数。
20str_表示字符串类型
21string_表示字节串类型

数据类型对象

数据类型对象(Data Type Object)又称 dtype 对象,主要用来描述数组元素的数据类型、大小以及字节顺序。同时,它也可以用来创建结构化数据。比如常见的 int64、float32 都是 dtype 对象的实例,其语法格式如下:

np.dtype(object)

创建一个 dtype 对象可以使用下列方法:

a= np.dtype(np.int64)

示例:

import numpy as np 
a= np.dtype(np.int64) 
print(a)  

输出结果:

int64

数据类型标识码

NumPy 中每种数据类型都有一个唯一标识的字符码,如下所示:

字符对应类型
b代表布尔型
i带符号整型
u无符号整型
f浮点型
c复数浮点型
m时间间隔(timedelta)
Mdatatime(日期时间)
OPython对象
S,a字节串(S)与字符串(a)
UUnicode
V原始数据(void)

下面使用数据类型标识码,创建一组结构化数据:

#创建数据类型score
import numpy as np
dt = np.dtype([('score','i1')])
print(dt) 

输出如下:

[(‘score’, ‘i1’)]

将上述的数据类型对象 dt,应用到 ndarray 中:

#定义字段名score,以及数组数据类型i1
dt = np.dtype([('score','i1')])
a = np.array([(55,),(75,),(85,)], dtype = dt)
print(a)
print(a.dtype)
print(a['score'])

输出结果:

获取a数组:
[(55,) (75,) (85,)] 
数据类型对象dtype
dtype([('score', 'i1')])
获取'score'字段分数
[55 75 85]

定义结构化数据

通常情况下,结构化数据使用字段的形式来描述某个对象的特征。以下示例描述一位老师的姓名、年龄、工资的特征,该结构化数据其包含以下字段:

  • str 字段:name
  • int 字段:age
  • float 字段:salary

定义过程如下:

import numpy as np
teacher = np.dtype([('name','S20'), ('age', 'i1'), ('salary', 'f4')])
#输出结构化数据teacher
print(teacher)
#将其应用于ndarray对象
b = np.array([('ycs', 32, 6357.50),('jxe', 28, 6856.80)], dtype = teacher) 
print(b)

输出结果:

[('name', 'S20'), ('age', 'i1'), ('salary', '<f4')]
#输出的name为bytes字节串类型
[(b'ycs', 32, 6357.5) (b'jxe', 28, 6856.8)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值