Python机器学习(三十六)NumPy数据类型
NumPy提供的数值类型,数值范围比Python提供的数值类型更大。NumPy的数值类型,如下表所示:
SN
数据类型
描述
1hrbool
布尔值,取值turefalse,占用一个字节
2hrint
是integer的默认类型。与C语言中的long类型相同,有可能是64位或32位。
3hrintc
类似于C语言中的整数类型(int),表示32位或64位的整型。
4hrintp
表示用于索引的整数。
5hrint8
8位整数,值的范围是128到127。
6hrint16
2字节(16位)整数。范围是32768到32767。
7hrint32
4字节(32位)的整数。范围是2147483648到2147483647。
8hrint64
8字节(64位)整数。范围是9223372036854775808到9223372036854775807。
9hruint8
1字节(8位)无符号整数。
10hruint16
2字节(16位)无符号整数。
11hruint32
4字节(32位)无符号整数。
12hruint64
8字节(64位)无符号整数。
13hrfloat
与float64相同。
14hrfloat16
半精度浮点数。5位保留给指数,10位保留给尾数,1位保留给符号。
15hrfloat32
单精度浮点数。8位保留给指数,23位保留给尾数,1位保留给符号。
16hrfloat64
双精度浮点数。指数保留11位,尾数保留52位,符号保留1位。
17hrcomplex
与complex128相同。
18hrcomplex64
复数,实数和虚数各占32位。
19hrcomplex128
复数,实数和虚数各占64位。
上述所有数值类型,都可由dtype描述。NumPy数据类型对象(dtype)
数据类型对象dtype,是描述数组中元素数据类型的对象。具体内容包括:数据类型(整数、浮点数或Python对象)数据长度字节顺序(小端或大端)在结构化类型中,字段名称、字段数据类型等。如果数据类型是子数组,则会包含其形状和数据类型
字节顺序由数据类型的前缀(‘‘或’’)决定。‘表示小端,’’表示大端。
我们可以使用以下语法,创建一个dtype对象。numpy。dtype(object,align,copy)
参数:object:要转换为dtype类型的对象。align:布尔值。如果为真,则添加额外的填充,使其等效于C结构体copy:创建一个新的dtype对象副本。如果为false,则结果是对内置数据类型对象的引用
示例importnumpyasnpdtnp。dtype(np。int32)print(dt)
输出int32
示例int8,int16,int32,int64等价于字符串i1,i2,i4,etc。importnumpyasnpdtnp。dtype(i4)print(dt)
输出
int32
示例使用字节顺序标记importnumpyasnpdtnp。dtype(i4)print(dt)
输出
i4创建结构化数据类型
我们可以创建类似字典的数据类型,包括字段名与字段值。
下面的示例展示了结构化数据类型的使用。
示例先创建结构化数据类型importnumpyasnpdtnp。dtype(〔(age,np。int8)〕)格式是:〔(字段名,字段类型)〕print(dt)
输出〔(age,i1)〕
示例现在将它应用到ndarray对象importnumpyasnpdtnp。dtype(〔(age,np。int8)〕)anp。array(〔(10,),(20,),(30,)〕,dtypedt)print(a)
输出〔(10,)(20,)(30,)〕
示例字段名可用于访问列的内容importnumpyasnpdtnp。dtype(〔(age,np。int8)〕)anp。array(〔(10,),(20,),(30,)〕,dtypedt)print(a〔age〕)
输出〔102030〕
示例
下面的示例定义了一个名为student的结构化数据类型,其中包含字符串字段name、整数字段age和浮点字段marks。然后将此dtype应用于ndarray对象。importnumpyasnpstudentnp。dtype(〔(name,S20),(age,i1),(marks,f4)〕)print(student)
输出C:Anaconda3python。exeC:ProgramFilesJetBrainsPyCharm2019。1。1helperspydevpydevconsole。pymodeclientport63681importsys;print(Pythonsons(sys。version,sys。platform))sys。path。extend(〔C:appPycharmProjects,C:appPycharmProjects〕)Python3。7。6(default,Jan82020,20:23:39)〔MSCv。191664bit(AMD64)〕Typecopyright,creditsorlicenseformoreinformationIPython7。12。0AnenhancedInteractivePython。Type?forhelp。PyDevconsole:usingIPython7。12。0Python3。7。6(default,Jan82020,20:23:39)〔MSCv。191664bit(AMD64)〕onwin32runfile(C:appPycharmProjectsArtificialIntelligencetest。py,wdirC:appPycharmProjectsArtificialIntelligence)〔(name,S20),(age,i1),(marks,f4)〕importnumpyasnpstudentnp。dtype(〔(name,S20),(age,i1),(marks,f4)〕)anp。array(〔(abc,21,50),(xyz,18,75)〕,dtypestudent)print(a)
输出〔(abc,21,50。0),(xyz,18,75。0)〕
每个内置数据类型都有一个唯一标识它的字符代码。‘b’boolean‘i’(signed)integer‘u’unsignedinteger‘f’floatingpoint‘c’complexfloatingpoint‘m’timedelta‘M’datetime‘O’(Python)objects‘S’,‘a’(byte)string‘U’Unicode‘V’rawdata(void)