在上一篇《手把手陪您学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 npIn [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属性以及数据类型转换方法的介绍。下一篇,我们将会利用数组的shape属性和dtype属性学习其他生成数组的方法,敬请关注。


感谢阅读本文!如有任何问题,欢迎留言,一起交流讨论^_^

要阅读《手把手陪您学Python》——NumPy系列文章的其他篇目,请关注公众号点击菜单选择,或点击下方链接直达。

《手把手陪您学Python》46——NumPy介绍

《手把手陪您学Python》47——ndarray

《手把手陪您学Python》48——数组的生成方法1

《手把手陪您学Python》49——数组的shape属性


《手把手陪您学Python》系列文章入门阶段的篇目已经全部完成。

为更加清晰地展示Python入门阶段的知识体系,整理了如下的鱼骨图,以方便大家查阅。

如要阅读相应篇目的内容,请关注公众号点击菜单选择,或点击下方链接直达。

《手把手陪您学Python》1——为什么要学Python?

《手把手陪您学Python》2——Python的安装

《手把手陪您学Python》3——PyCharm的安装和配置

《手把手陪您学Python》4——Hello World!

《手把手陪您学Python》5——Jupyter Notebook

《手把手陪您学Python》6——字符串的标识

《手把手陪您学Python》7——字符串的索引

《手把手陪您学Python》8——字符串的切片

《手把手陪您学Python》9——字符串的运算

《手把手陪您学Python》10——字符串的函数

《手把手陪您学Python》11——字符串的格式化输出

《手把手陪您学Python》12——数字

《手把手陪您学Python》13——运算

《手把手陪您学Python》14——交互式输入

《手把手陪您学Python》15——判断语句if

《手把手陪您学Python》16——循环语句while

《手把手陪您学Python》17——循环的终止

《手把手陪您学Python》18——循环语句for

《手把手陪您学Python》19——第一阶段小结

《手把手陪您学Python》20——列表

《手把手陪您学Python》21——元组

《手把手陪您学Python》22——字典

《手把手陪您学Python》23——内置序列函数

《手把手陪您学Python》24——集合

《手把手陪您学Python》25——列表推导式

《手把手陪您学Python》26——自定义函数

《手把手陪您学Python》27——自定义函数的参数

《手把手陪您学Python》28——自定义函数的返回值

《手把手陪您学Python》29——匿名函数

《手把手陪您学Python》30——模块

《手把手陪您学Python》31——文件的打开

《手把手陪您学Python》32——文件的读取

《手把手陪您学Python》33——文件的关闭

《手把手陪您学Python》34——文件的写入

《手把手陪您学Python》35——数据的存储

《手把手陪您学Python》36——错误和异常处理

《手把手陪您学Python》37——程序的重构

《手把手陪您学Python》38——第二阶段小结

《手把手陪您学Python》39——面向对象

《手把手陪您学Python》40——类的定义、属性与实例化

《手把手陪您学Python》41——类的方法与实例方法

《手把手陪您学Python》42——类的魔法方法

《手把手陪您学Python》43——类的继承

《手把手陪您学Python》44——类的导入

《手把手陪您学Python》45——Python入门完结篇

For Fans:关注“亦说Python”公众号,回复“手50”,即可免费下载本篇文章所用示例语句。

亦说Python——Python爱好者的学习分享园地

《手把手陪您学Python》50——数组的dtype属性相关推荐

  1. 《手把手陪您学Python》26——自定义函数

    在上一篇<手把手陪您学Python>25--列表推导式中,我们学习了推导式的相关概念和使用方法,使用推导式的方法,可以减少代码的输入量.提高可读性,是Python中非常受欢迎的一种形式. ...

  2. 《手把手陪您学Python》42——类的魔法方法

    在上一篇<手把手陪您学Python>41--类方法与实例方法中,我们引入了类方法的概念,并介绍了类方法与实例方法在语法规则和引用方面的差异.今天,我们将会继续介绍实例方法的应用,并介绍一种 ...

  3. 手把手教你学Python之Pandas(一文掌握数据分析与处理库-Pandas)

    目录 基本结构之Series Series对象的创建 Index对象介绍 Series中数据的访问 Series中常用方法 基本结构之DataFrame DataFrame的创建 ​DataFrame ...

  4. 手把手教你学Python之波士顿房价预测(scikit-learn的应用)

    目录 1.波士顿房价预测介绍 2.线性回归算法 3.调用scikit-learn库实现房价预测 1.波士顿房价预测介绍 问题描述:波士顿房价数据集统计的是20世纪70年代中期波士顿郊区房价的中位数,统 ...

  5. 手把手教你学Python之Matplotlib绘图(一文掌握数据可视化库-Matplotlib)

    目录 Matplotlib介绍 线形图(折线图) 直方图 条形图 饼状图 散点图 Matplotlib介绍        matplotlib是一个Python 的2D绘图库,提供了一套表示和操作图以 ...

  6. python global用法_14_手把手教你学Python之函数(下)

    变量作用域:根据变量定义的位置,可将变量分为全局变量和局部变量. 全局变量:定义在函数外面的变量,可以在多个函数中进行访问,但不能执行赋值操作.如果有赋值语句,相当于创建了一个同名的局部变量: 局部变 ...

  7. oracle数据库更新语句_20_手把手教你学Python之操作数据库

    数据库是数据的仓库,将大量数据按照一定的方式组织并存储起来,方便进行管理和维护,例如快速检索和统计等.数据库的主要特点: 以一定的方式组织.存储数据: 能为多个用户共享: 与程序彼此独立. -- 数据 ...

  8. python中字典的value可以为任意对象_手把手教你学Python之字典

    字典是一种无序可变的容器,字典中的元素都是"键(key):值(value)"对, "键"和"值"之间用冒号隔开,所有"键值对&qu ...

  9. 手把手教你学Python之常见运算符

    目录 算术运算符 关系运算符 逻辑运算符 位运算符 成员运算符 身份运算符 前面给大家介绍了Python中的一些基本数据类型,这些数据之间如何进行运算呢?这就需要借助于一些运算符了,Python中提供 ...

最新文章

  1. 浅谈iptables防SYN Flood攻击和CC攻击
  2. 文件方式实现完整的英文词频统计实例(9.27)
  3. 三、mongodb数据库系列——mongodb和python交互 总结
  4. 程序员谈谈我的职场观(一)
  5. 使用BFC块级上下文
  6. Statement、PreparedStatement、CallableStatement的区别
  7. 字符串数组排序的快速排序实现
  8. Echarts-地图扩展-标准geoJson格式扩展地图-例子
  9. MT4API跟单、外汇API跟单接口详解
  10. assimp android build,Windows环境下编译Assimp库生成Android可用的.so文件
  11. signature=99d87437cab1487c89a59a65cc379430,剖析根据汉字转拼音的JQuery插件源码
  12. java中的element_element是什么意思
  13. 宥马运动服务器正在维护,宥马运动ios版
  14. Failed to initiate the GitHub login process. Please try again(1.1.25.1678)
  15. JAVA中枚举是什么
  16. ConcurrentHashMap原理,在JKD7和JDK8版本的区别
  17. vagrant启动虚拟机Stderr: VBoxManage.exe: error: Call to WHvSetupPartition failed: ERROR_SUCCESS (Last=0xc
  18. vc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 ‘context:property-placeholder‘ 的声明。
  19. 正点原子STM32MP157学习——1.开发环境及基本知识
  20. 解码聊天机器人技术:权威指南

热门文章

  1. 淘淘商城第11讲——如何安装单机版Zookeeper?
  2. nexus5 线刷5.01
  3. python编程绘制楼梯_Python走楼梯问题解决方法示例
  4. 关于squeeze函数
  5. 实现单例模式四种方法--java
  6. 2021年性价比最高的笔记本电脑 2021年最值得入手的笔记本电脑
  7. 新的刷脸支付方式掘起手机支付将会終结
  8. latex中插入表格
  9. Python数据处理Tips数据的降维的Scikit-learn的14种实现方式
  10. 选择性粘贴更改html格式,选择性粘贴这二个逆天的技巧你肯定不知道!