……

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

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

输出

C:\Anaconda3\python.exe "C:\Program Files\JetBrains\PyCharm 2019.1.1\helpers\pydev\pydevconsole.py" --mode=client --port=63681
import sys; print('Python %s on %s' % (sys.version, sys.platform))
sys.path.extend(['C:\\app\\PycharmProjects', 'C:/app/PycharmProjects'])
Python 3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.12.0 -- An enhanced Interactive Python. Type '?' for help.
PyDev console: using IPython 7.12.0
Python 3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] on win32
runfile('C:/app/PycharmProjects/ArtificialIntelligence/test.py', wdir='C:/app/PycharmProjects/ArtificialIntelligence')
[('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)
 posted on 2020-06-18 18:39  大码王  阅读(356)  评论(0编辑  收藏  举报
复制代码