Python机器学习(三十六)NumPy 数据类型
Posted 大码王
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python机器学习(三十六)NumPy 数据类型相关的知识,希望对你有一定的参考价值。
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:Anaconda3python.exe "C:Program FilesJetBrainsPyCharm 2019.1.1helperspydevpydevconsole.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)
以上是关于Python机器学习(三十六)NumPy 数据类型的主要内容,如果未能解决你的问题,请参考以下文章