1、数据类型

对于“数据类型”这个字眼我们并不陌生,它指的就是数据的大类或者说Python的对象。

在入门阶段,我们学习的数字、字符串、布尔值、列表、元组、集合、字典,以及我们刚刚学习的数组,都是不同的数字类型。

其中,数字还可以分为整型、浮点型,甚至可以根据数位和精度再进行细分。

下表列举了Python中的一些数据类型,但主要是用于展示。特别是对于初学阶段的我们来说,只需要知道int、float、bool、string等数据类型就可以了。

等到我们需要在硬盘或者内存进行更深入的读取操作时,再了解这些与存储相关的数位以及精度等数据类型。

 

名称

描述

bool_

布尔型数据类型(True 或者 False)

int_

默认的整数类型(类似于 C 语言中的 long,int32 或 int64)

intc

与 C 的 int 类型一样,一般是 int32 或 int 64

intp

用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)

int8

字节(-128 to 127)

int16

整数(-32768 to 32767)

int32

整数(-2147483648 to 2147483647)

int64

整数(-9223372036854775808 to 9223372036854775807)

uint8

无符号整数(0 to 255)

uint16

无符号整数(0 to 65535)

uint32

无符号整数(0 to 4294967295)

uint64

无符号整数(0 to 18446744073709551615)

float_

float64 类型的简写

float16

半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位

float32

单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位

float64

双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位

complex_

complex128 类型的简写,即 128 位复数

complex64

复数,表示双 32 位浮点数(实数部分和虚数部分)

complex128

复数,表示双 64 位浮点数(实数部分和虚数部分)

unicode_

修正的Unicode类型,例如,生成一个长度为10的Unicode类型,使用“U10”

注:转自菜鸟教程。

 2、dtype属性

NumPy要求数组中的每一个元素都具有相同的数据类型,因此,每一个数组都有且仅有一个数据类型,这个数据类型就是数组的dtype属性。

其实,更严谨地说,dtype也是一个对象,它包含了ndarray需要为某一种类型数据所申明的内存块信息,并用于与其他系统数据进行灵活交互。

但这个定义对我们来说太难理解了,我们就认为dtype就是数组的数据类型就好了,可能是整数、浮点数、布尔值或者字符串等等。

dtype和我们上节课所学的ndim属性很类似,都是数组的“类属性”,所以只要对实例进行类属性的引用就好了。

In [1]: import numpy as np

In [2]: data1 = [1, 2, 3, 4, 5, 6]   # 整数
        arr1 = np.array(data1)
        arr1.dtype
Out[2]: dtype('int32')

In [3]: data2 = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]   # 浮点数
        arr2 = np.array(data2)
        arr2.dtype
Out[3]: dtype('float64')

In [4]: data3 = [True, False, True, False, True, False ]   # 布尔值
        arr3 = np.array(data3)
        arr3.dtype
Out[4]: dtype('bool')

In [5]: data4 = ['a', 'b', 'c', 'd', 'e', 'f']   # 字符串
        arr4 = np.array(data4)
        arr4.dtype
Out[5]: dtype('<U1')

最后一个字符串的数据类型可能不是很好理解,其中,第一个字符是字节序,< 表示小端,> 表示大端,| 表示平台的字节序;U是上表中的最后一行Unicode的意思;1代表长度字符串的长度。后面可能用的比较少,所以简单了解一下就行。

3、数据类型的转换

在入门阶段,我们曾经学习过数据类型的转换,也就是整数(int)、浮点数(float)、字符串(str)之间的类型转换,使用的方法是int()、float()、str()。大家可以通过点击链接直达《手把手陪您学Python》12——数字进行回顾。

数组的数据类型也可以转换,也同样是在整数(int)、浮点数(float)、字符串(str)之间进行类型的转换,使用的是astype方法。

需要注意的有两点:

一是将字符串转换为数字时,只有由表达数字含义的字符组成的字符串才能够进行转换;

二是将浮点数转换为整数时,小数点后面的部分会直接被删除,而不是四舍五入。

In [6]: data5 = ['1.2', '2.8', '3.7', '4.1', '5.3', '6.9']   # 数字组成的字符串
        arr5 = np.array(data5)
        arr5.dtype
Out[6]: dtype('<U3')

In [7]: arr6 = arr5.astype('float64')   # 字符串转换为浮点数
        arr6
Out[7]: array([1.2, 2.8, 3.7, 4.1, 5.3, 6.9])

In [8]: arr6.dtype
Out[8]: dtype('float64')

In [9]: arr7 = arr6.astype('int')   # 浮点数转换为整数,小数点后的部分被删除
        arr7
Out[9]: array([1, 2, 3, 4, 5, 6])

In [10]: arr7.dtype
Out[10]: dtype('int32')

In [11]: arr8 = arr7.astype('str')
         arr8
Out[11]: array(['1', '2', '3', '4', '5', '6'], dtype='<U11')

以上就是对数组dtype属性以及数据类型转换方法的介绍。

 

python 获取数组float python获取数组的属性_NumPy