NumPy 数据类型

章节


NumPy提供的数值类型,数值范围比Python提供的数值类型更大。NumPy的数值类型,如下表所示:

SN数据类型描述
1bool_布尔值,取值ture/false,占用一个字节
2int_是integer的默认类型。与C语言中的long类型相同,有可能是64位或32位。
3intc类似于C语言中的整数类型(int),表示32位或64位的整型。
4intp表示用于索引的整数。
5int88位整数,值的范围是-128到127。
6int162字节(16位)整数。范围是-32768到32767。
7int324字节(32位)的整数。范围是-2147483648到2147483647。
8int648字节(64位)整数。范围是-9223372036854775808到9223372036854775807。
9uint81字节(8位)无符号整数。
10uint162字节(16位)无符号整数。
11uint324字节(32位)无符号整数。
12uint648字节(64位)无符号整数。
13float_与float64相同。
14float16半精度浮点数。5位保留给指数,10位保留给尾数,1位保留给符号。
15float32单精度浮点数。8位保留给指数,23位保留给尾数,1位保留给符号。
16float64双精度浮点数。指数保留11位,尾数保留52位,符号保留1位。
17complex_与complex128相同。
18complex64复数,实数和虚数各占32位。
19complex128复数,实数和虚数各占64位。

上述所有数值类型,都可由dtype描述。

NumPy 数据类型对象(dtype)

数据类型对象/dtype,是描述数组中元素数据类型的对象。具体内容包括:

  • 数据类型(整数、浮点数或Python对象)
  • 数据长度
  • 字节顺序(小端或大端)
  • 在结构化类型中,字段名称、字段数据类型等。
  • 如果数据类型是子数组,则会包含其形状和数据类型

字节顺序由数据类型的前缀(’<‘或’>’)决定。’<‘表示小端,’>'表示大端。

我们可以使用以下语法,创建一个dtype对象。

numpy.dtype(object, align, copy) 

参数:

  • object: 要转换为dtype类型的对象。
  • align: 布尔值。如果为真,则添加额外的填充,使其等效于C结构体
  • copy: 创建一个新的dtype对象副本。如果为false,则结果是对内置数据类型对象的引用

示例

import numpy as np 
dt = np.dtype(np.int32) 
print(dt)

输出

int32

示例

#int8, int16, int32, int64 等价于字符串 'i1', 'i2','i4', etc. 
import numpy as np 

dt = np.dtype('i4')
print(dt)

输出

int32

示例

# 使用字节顺序标记
import numpy as np 
dt = np.dtype('>i4') 
print(dt)

输出

>i4

创建结构化数据类型

我们可以创建类似字典的数据类型,包括字段名与字段值。

下面的示例展示了结构化数据类型的使用。

示例

# 先创建结构化数据类型
import numpy as np 
dt = np.dtype([('age',np.int8)]) # 格式是:[('字段名', 字段类型)]
print(dt) 

输出

[('age', 'i1')] 

示例

# 现在将它应用到ndarray对象
import numpy as np 

dt = np.dtype([('age',np.int8)]) 
a = np.array([(10,),(20,),(30,)], dtype = dt) 
print(a) 

输出

[(10,) (20,) (30,)]

示例

# 字段名可用于访问列的内容
import numpy as np 

dt = np.dtype([('age',np.int8)]) 
a = np.array([(10,),(20,),(30,)], dtype = dt) 
print(a['age'])

输出

[10 20 30]

示例

下面的示例定义了一个名为student的结构化数据类型,其中包含字符串字段“name”、整数字段“age”和浮点字段“marks”。然后将此dtype应用于ndarray对象。

import numpy as np 
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
print(student)

输出

[('name', 'S20'), ('age', 'i1'), ('marks', '<f4')])
import numpy as np 

student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student) 
print(a)

输出

[('abc', 21, 50.0), ('xyz', 18, 75.0)]

每个内置数据类型都有一个唯一标识它的字符代码。

  • ‘b’ − boolean
  • ‘i’ − (signed) integer
  • ‘u’ − unsigned integer
  • ‘f’ − floating-point
  • ‘c’ − complex-floating point
  • ‘m’ − timedelta
  • ‘M’ − datetime
  • ‘O’ − (Python) objects
  • ‘S’, ‘a’ − (byte-)string
  • ‘U’ − Unicode
  • ‘V’ − raw data (void)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值