Python 教程之 Numpy(5)—— 数据类型对象(dtype)

简介: Python 教程之 Numpy(5)—— 数据类型对象(dtype)

每个 ndarray 都有一个关联的数据类型 (dtype) 对象。这个数据类型对象(dtype)告诉我们数组的布局。这意味着它为我们提供了以下信息:

  • 数据类型(整数、浮点数、Python 对象等)
  • 数据大小(字节数)
  • 数据的字节顺序(小端或大端)
  • 如果数据类型是子数组,它的形状和数据类型是什么?

ndarray 的值存储在缓冲区中,可以将其视为连续的内存字节块。所以这些字节将如何被解释由 dtype 对象给出。  


1.构造数据类型(dtype)对象: 数据类型对象是NumPy.dtype类的一个实例,可以使用NumPy.dtype来创建。

参数:

  • obj: 要转换为数据类型对象的对象。
  • align : bool, optional

      向字段添加填充以匹配 C 编译器为类似 C 结构输出的内容。

  • copy : bool, optional
    创建数据类型对象的新副本。如果为 False,则结果可能只是对内置数据类型对象的引用。
# Python 程序创建数据类型对象
import numpy as np
# np.int16 被转换为数据类型对象。
print(np.dtype(np.int16))

输出:

int16
# Python 程序创建一个包含 32 位大端整数的数据类型对象
import numpy as np
# i4 表示大小为 4 字节的整数
# > 代表大端字节序,< 代表小端编码。
# dt 是一个 dtype 对象
dt = np.dtype('>i4')
print("Byte order is:",dt.byteorder)
print("Size is:",dt.itemsize)
print("Data type is:",dt.name)

输出:

Byte order is: >
Size is: 4
Name of data type is: int32

类型说明符(在上述情况下为i4 )可以采用不同的形式:

b1, i1, i2, i4, i8, u1, u2, u4, u8, f2, f4, f8, c8, c16, a

(表示字节、整数、无符号整数、浮点数、复数和 指定字节长度

的定长字符串)****

  • int8,...,uint8,...,float16, float32, float64, complex64, complex128
    (这次是大小)

笔记:

dtype is different from type.
# 用于区分类型和数据类型的 Python 程序。
import numpy as np
a = np.array([1])
print("type is: ",type(a))
print("dtype is: ",a.dtype)

输出:

type is:    
dtype is:  int32

2. 具有结构化数组的数据类型对象: 数据类型对象对于创建结构化数组很有用。结构化数组是包含不同类型数据的数组。可以借助字段访问结构化数组。

字段就像为对象指定名称。在结构化数组的情况下,dtype 对象也将是结构化的。

# 用于演示字段使用的 Python 程序
import numpy as np
# 一种结构化数据类型,包含一个 16 字符的字符串(在“name”字段中)和两个 64 位浮点数的子数组(在“grades”字段中):
dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
# 具有字段等级的对象的数据类型
print(dt['grades'])
# 具有字段名称的对象的数据类型
print(dt['name'])

输出: 

('<f8', (2,))
# Python 程序演示了数据类型对象与结构化数组的使用。
import numpy as np
dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
# x 是一个包含学生姓名和分数的结构化数组。
# 学生姓名的数据类型是np.unicode_,分数的数据类型是np.float(64)
x = np.array([('Sarah', (8.0, 7.0)), ('John', (6.0, 7.0))], dtype=dt)
print(x[1])
print("Grades of John are: ",x[1]['grades'])
print("Names are: ",x['name'])

输出:

('John', [ 6.,  7.])
Grades of John are:  [ 6.  7.]
Names are:  ['Sarah' 'John']

感谢大家的阅读,有什么问题的话可以在评论中告诉我。希望大家能够给我来个点赞+收藏+评论 ,你的支持是海海更新的动力!后面我会持续分享前端 & 后端相关的专业知识。



目录
相关文章
|
4月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
838 19
|
3月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
163 1
|
4月前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
180 4
|
5月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
601 3
|
4月前
|
数据采集 存储 JSON
使用Python获取1688商品详情的教程
本教程介绍如何使用Python爬取1688商品详情信息,涵盖环境配置、代码编写、数据处理及合法合规注意事项,助你快速掌握商品数据抓取与保存技巧。
|
5月前
|
并行计算 算法 Java
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
Python解释器不止CPython,还包括PyPy、MicroPython、GraalVM等,各具特色,适用于不同场景。本文深入解析Python解释器的工作原理、内存管理机制、GIL限制及其优化策略,并介绍性能调优工具链及未来发展方向,助力开发者提升Python应用性能。
378 0
|
5月前
|
Python
解决Python中AttributeError:'image'对象缺少属性'read_file'的问题策略。
通过上述策略综合考虑,您将能够定位问题并确定如何解决它。记住,Python社区很庞大,也很乐于帮助解决问题,因此不要害怕在求助时提供尽可能多的上下文和您已经尝试过的解决方案。
170 0
|
5月前
|
数据采集 索引 Python
Python Slice函数使用教程 - 详解与示例 | Python切片操作指南
Python中的`slice()`函数用于创建切片对象,以便对序列(如列表、字符串、元组)进行高效切片操作。它支持指定起始索引、结束索引和步长,提升代码可读性和灵活性。
|
3月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
399 0
|
3月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
254 0

热门文章

最新文章

推荐镜像

更多