在上一篇《手把手陪您学Python》49——数组的shape属性中,我们对数组的”形状”及其表示方式有了更为深入的了解。
今天,我们将会继续学习数组的属性,但不是与数组”形状”有关的属性了,而是与数组数据类型有关的dtype属性。
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('
最后一个字符串的数据类型可能不是很好理解,其中,第一个字符是字节序,< 表示小端,> 表示大端,| 表示平台的字节序;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('
以上就是对数组dtype属性以及数据类型转换方法的介绍。下一篇,我们将会利用数组的shape属性和dtype属性学习其他生成数组的方法,敬请关注。
感谢阅读本文!如有任何问题,欢迎留言,一起交流讨论^_^
要阅读《手把手陪您学Python》——NumPy系列文章的其他篇目,请关注公众号点击菜单选择,或点击下方链接直达。
《手把手陪您学Python》系列文章入门阶段的篇目已经全部完成。
为更加清晰地展示Python入门阶段的知识体系,整理了如下的鱼骨图,以方便大家查阅。
如要阅读相应篇目的内容,请关注公众号点击菜单选择,或点击下方链接直达。
《手把手陪您学Python》3——PyCharm的安装和配置
《手把手陪您学Python》5——Jupyter Notebook
For Fans:关注”亦说Python”公众号,回复”手50″,即可免费下载本篇文章所用示例语句。
Original: https://blog.csdn.net/mnpy2019/article/details/116157481
Author: mnpy2019
Title: 《手把手陪您学Python》50——数组的dtype属性
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/762763/
转载文章受原作者版权保护。转载请注明原作者出处!