当前位置: 首页 > news >正文

NumPy 数据类型

1.常用 NumPy 基本类型

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

(2)int_:默认的整数类型(类似C 语言long,int32 或 int64)

(3)intc:与 C 语言的 int 类型相似,一般是 int32 或 int 64

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

(5)int8:字节(-128 to 127)

(6)int16:整数(-32768 to 32767)

(7)int32:整数(-2147483648 to 2147483647)

(8)int64:整数(-9223372036854775808 to 9223372036854775807)

(9)uint8:无符号整数(0 to 255)

(10)uint16:无符号整数(0 to 65535)

(11)uint32:无符号整数(0 to 4294967295)

(12)uint64:无符号整数(0 to 18446744073709551615)

(13)float_:float64 类型的简写

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

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

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

(17)complex_:complex128 类型,即 128 位复数

(18)complex64:复数,双 32 位浮点数(实数部分和虚数部分)

(19)complex128:复数,双 64 位浮点数(实数部分和虚数部分)

(20)numpy 的数值类型实际上是 dtype 对象的实例,并对应唯一的字符,包括 np.bool_,np.int32,np.float32,等等。

2数据类型对象 (dtype) 描述与数组对应的内存区域使用

字节顺序通过对数据类型预先设定 < 或 > 决定。 < 小端法(最小值存储在最小的地址,低位组放在最前面)。> 大端法(最重要的字节存储在最小的地址,高位组放在最前面)。

(1)数据的类型(整数,浮点数或者 Python 对象)

(2)数据的大小(例如, 整数使用多少个字节存储)

(3)数据的字节顺序(小端法或大端法)

(4)在结构化类型的情况下,字段的名称、每个字段的数据类型和每个字段所取的内存块的部分

(5)如果数据类型是子数组,那么它的形状和数据类型是什么。

numpy.dtype(object, align, copy)

(1)object:要转换为的数据类型对象

(2)align:如果为 true,填充字段使其类似 C 的结构体。

(3)copy:复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用

3.定义并查看 int32 类型的描述信息

import numpy as np
# 使用标量类型
dt = np.dtype(np.int32)
print(dt)

(1)导入 numpy 库:import numpy as np 将 numpy 库导入并简写为 np,方便后续使用。

(2)定义数据类型:np.dtype(np.int32) 创建了数据类型对象 dt,表示 32 位整型。np.int32 是 numpy 定义的 32 位整数类型,可以存储从 -2,147,483,648 到 2,147,483,647 之间的整数。

(3)输出数据类型:print(dt) 会输出 int32,显示定义的数据类型。

4.用缩写符号 'i4' 表示 int32 数据类型,并输出描述信息

import numpy as np
# int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替
dt = np.dtype('i4')
print(dt)

(1)导入 numpy 库:import numpy as np 导入 numpy 库并简写为 np,便于后续代码调用。

(2)使用缩写表示数据类型:np.dtype('i4') 创建了数据类型对象 dt,表示 32 位整数类型(int32), 'i4' 是 int32 的缩写形式。'i1' 表示 int8 类型,8 位整数。'i2' 表示 int16 类型,16 位整数。'i4' 表示 int32 类型,32 位整数。'i8' 表示 int64 类型,64 位整数。

(3)输出数据类型:print(dt) 会输出 int32,显示定义的数据类型。

5.定义小端字节序的 int32 数据类型并输出描述信息

import numpy as np
# 字节顺序标注
dt = np.dtype('<i4')
print(dt)

(1)导入 numpy 库:import numpy as np 导入 numpy 并重命名为 np,便于后续调用。

(2)使用字节顺序和数据类型缩写:np.dtype('<i4') 创建数据类型对象 dt,表示小端字节序的 32 位整数(int32)。'<i4' 中的符号解释:< 表示小端字节序(little-endian),即低字节位存储在低地址处。i4 表示 int32 类型,即 4 字节的整数。在字节顺序标注中,'<' 表示小端字节序,'>' 表示大端字节序(big-endian)。

(3)输出数据类型:print(dt) 会输出 int32,显示该数据类型。

6.创建包含单个字段的结构化数据类型

# 首先创建结构化数据类型
import numpy as np
dt = np.dtype([('age',np.int8)])
print(dt)

(1)导入 numpy 库:import numpy as np 导入 numpy 并重命名为 np。

(2)定义结构化数据类型:np.dtype([('age', np.int8)]) 定义了一个结构化数据类型 dt,其中包含一个字段。[('age', np.int8)] 是一个包含字段定义的列表,每个字段由名称和数据类型组成。'age' 是字段的名称。np.int8 是字段的数据类型,表示 8 位的整数(范围是 -128 到 127)。这使得 dt 成为一种结构,可以用于存储包含 age 字段的数据。

(3)输出数据类型:print(dt) 输出 dt 的描述信息,显示结构化数据类型的定义。

7.通过 dtype 参数将结构化数据类型 dt 应用于 ndarray 对象

# 将数据类型应用于 ndarray 对象
import numpy as np
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print(a)

(1)导入 numpy 库:import numpy as np 导入 numpy 并重命名为 np。

(2)定义结构化数据类型:dt = np.dtype([('age', np.int8)]) 创建结构化数据类型 dt,包含一个字段 'age',类型为 int8。

(3)创建结构化数组:np.array([(10,), (20,), (30,)], dtype=dt) 使用定义的数据类型 dt 创建一个 ndarray 数组 a。数组 a 的每个元素都是一个包含单一字段的元组,其中 'age' 字段的值分别是 10, 20 和 30。dtype=dt 指定数组的每个元素应当符合 dt 定义的结构,即每个元素包含一个 int8 类型的 age 字段。

(4)输出数组:print(a) 打印数组内容,输出结果将显示 [(10,) (20,) (30,)],其中每个元素的值对应 age 字段。

8.通过字段名称来访问结构化数组中的具体列

# 类型字段名可以用于存取实际的 age 列
import numpy as np
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print(a['age'])

(1)导入 numpy 库:import numpy as np 导入 numpy 并简写为 np。

(2)定义结构化数据类型:dt = np.dtype([('age', np.int8)]) 定义了结构化数据类型 dt,包含一个字段 'age',数据类型为 int8。

(3)创建结构化数组:a = np.array([(10,), (20,), (30,)], dtype=dt) 用定义的结构化数据类型 dt 创建一个 ndarray 数组 a,每个元素包含一个 age 字段。每个元组对应一个元素,10、20 和 30 分别为 age 字段的值。

(4)通过字段名访问数据:a['age'] 使用字段名 'age' 来获取数组 a 中所有元素的 age 数据。这个操作返回一个数组,包含了 age 字段的所有值 [10, 20, 30]。

(5)输出结果:print(a['age']) 输出 [10 20 30],age 字段的所有值。

9.创建适用于学生数据的结构化数据类型 student

import numpy as np
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])
print(student)

(1)导入 numpy 库:import numpy as np 导入 numpy 并重命名为 np。

(2)定义结构化数据类型:student = np.dtype([('name', 'S20'), ('age', 'i1'), ('marks', 'f4')]) 定义了一个结构化数据类型 student,包含三个字段:'name':数据类型为 'S20',表示一个长度为 20 的字符串。S 表示字节字符串类型,20 是最大字符长度。'age':数据类型为 'i1',表示一个 8 位的整数(即 int8),范围是 -128 到 127。'marks':数据类型为 'f4',表示一个 32 位的浮点数(即 float32)。这个结构化数据类型适合表示学生的 name(名字),age(年龄),和 marks(分数)。

(3)输出结构化数据类型描述:print(student) 打印 student 类型的描述信息。输出显示:[('name', 'S20'), ('age', 'i1'), ('marks', 'f4')],每个字段及其对应的数据类型。

10.创建包含多个学生信息的结构化数组 a

import numpy as np
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])
a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student)
print(a)

(1)导入 numpy 库:import numpy as np 导入 numpy 并简写为 np。

(2)定义结构化数据类型:student = np.dtype([('name', 'S20'), ('age', 'i1'), ('marks', 'f4')]) 定义了名为 student 的结构化数据类型。'name' 字段为 S20,长度为 20 的字节字符串,用于存储学生名字。'age' 字段为 i1,8 位整数(即 int8),用于存储学生年龄。'marks' 字段为 f4,表示 32 位浮点数(即 float32),用于存储学生分数。

(3)创建结构化数组:a = np.array([('abc', 21, 50), ('xyz', 18, 75)], dtype=student) 创建了一个数组 a,包含两个学生的记录:第一条记录:('abc', 21, 50),其中 'abc' 是学生的名字,21 是年龄,50 是分数。第二条记录:('xyz', 18, 75),其中 'xyz' 是学生的名字,18 是年龄,75 是分数。dtype=student 指定了数组 a 的数据类型为之前定义的结构化数据类型 student。

(4)输出数组:print(a) 打印数组 a 的内容,结果为[(b'abc', 21, 50.) (b'xyz', 18, 75.)]输出显示了每个学生的详细信息,其中 b'abc' 和 b'xyz' 表示字节字符串格式的名字,21 和 18 是年龄,50. 和 75. 是分数(浮点数格式)。

11.常用数据类型代码(字符)及对应实际数据类型

(1)b:布尔型,表示布尔值 (True/False)

(2)i :(有符号) 整型,表示有符号整数,允许负数,例如 -128 到 127(具体范围根据字节数不同而不同)

(3)u:无符号整型,表示无符号整数,只允许正数,例如 0 到 255(具体范围根据字节数不同而不同)

(4)f :浮点型:表示浮点数,即带小数的数值,例如 3.14

(5)c :复数浮点型,表示复数,由两个浮点数表示实部和虚部,如 3 + 2j

(6)m:timedelta,表示时间间隔,用于日期和时间的差值

(7)M:datetime,表示日期时间类型,用于存储具体的日期和时间

(8)O:对象,表示 Python 对象,一般用于存储任意 Python 对象

(9)S, a:(byte-)字符串,表示字节字符串,例如 b'hello'。S 和 a 的后面可以指定长度,例如 S10 表示长度为 10 的字节字符串

(10)U:Unicode,表示 Unicode 字符串,可用于存储多语言字符

(11)V:原始数据类型 (void)     ,表示原始数据,用于定义结构化数据类型或指定占位空间

http://www.lryc.cn/news/476995.html

相关文章:

  • JavaScript——(4)
  • 每日一练 | DHCP Relay(DHCP 中继)
  • `psdparse`:解锁Photoshop PSD文件的Python密钥
  • 考研要求掌握的C语言程度(插入排序)
  • mybatis源码解析-sql执行流程
  • Golang | Leetcode Golang题解之第538题把二叉搜索树转换为累加树
  • 【linux】HTTPS 协议原理
  • 安利一款开源企业级的报表系统SpringReport
  • 数据安全-接口数据混合加密笔记
  • JeecgBoot入门
  • 用 Vue.js 打造炫酷的动态数字画廊:展示学生作品的创意之旅
  • 【YOLO学习】YOLOv8改进举例
  • 文心一言 VS 讯飞星火 VS chatgpt (383)-- 算法导论24.5 3题
  • 【AIGC】如何通过ChatGPT轻松制作个性化GPTs应用
  • gulp入门教程2:gulp发展历史
  • 【实验八】前馈神经网络(4)优化问题
  • 【深度学习】论文笔记:空间变换网络(Spatial Transformer Networks)
  • Charles抓包_Android
  • 【MATLAB源码-第204期】基于matlab的语音降噪算法对比仿真,谱减法、维纳滤波法、自适应滤波法;参数可调。
  • Scala的包及其导入
  • deepfm模型实现招聘职位推荐算法
  • 编程之路:蓝桥杯备赛指南
  • Android 15 在状态栏时间中显示秒数
  • Flutter 鸿蒙next版本:自定义对话框与表单验证的动态反馈与错误处理
  • Unreal Engine5中使用 Lyra框架
  • Spring Security-02-Spring Security认证方式-HTTP基本认证、Form表单认证、HTTP摘要认证、前后端分离安全处理方案
  • 【scikit-learn 1.2版本后】sklearn.datasets中load_boston报错 使用 fetch_openml 函数来加载波士顿房价
  • vxe-table v4.8+ 与 v3.10+ 导出 xlsx、支持导出合并、设置样式、宽高、边框、字体、背景、超链接、图片的详细介绍,一篇就够了
  • 江协科技STM32学习- P36 SPI通信外设
  • 【大数据】ClickHouse常见的表引擎及建表语法