numpy(02 数据类型和数据类型转换)

news/2025/2/21 14:22:14/

numpy(01 入门) 

目录

一、Python NumPy 数据类型

1.1 NumPy 基本类型

1.2 数据类型对象 (dtype)

1.3 具体实例

二、Numpy数据类型转换 

2.1 浮点数据转换

2.2 整型数据转换

2.3 浮点数转整数


 

一、Python NumPy 数据类型

1.1 NumPy 基本类型

下表列举了常用 NumPy 基本类型。

名称描述
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 位浮点数(实数部分和虚数部分)

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

每个内建类型都有一个唯一定义它的字符代码如下:

1.2 数据类型对象 (dtype)

数据类型对象是用来描述与数组对应的内存区域如何使用,这依赖如下几个方面:

  • 数据的类型(整数,浮点数或者 Python 对象)
  • 数据的大小(例如, 整数使用多少个字节存储)
  • 数据的字节顺序(小端法或大端法)
  • 在结构化类型的情况下,字段的名称、每个字段的数据类型和每个字段对应的内存块的区域
  • 如果数据类型是子数组,它的形状和数据类型

字节顺序是通过对数据类型预先设定”<“或”>”来决定的。”<“意味着小端法(最高有效字节在最前面的方式称为大端法)。”>”意味着大端法(最低有效字节在最前面的方式成为小端法)。 

小端与大端的区别:

字节顺序高位字节存储位置低位字节存储位置
大端(Big-endian)低地址存高位字节高地址存低位字节
小端(Little-endian)低地址存低位字节高地址存高位字节

 dtype 对象是使用以下语法构造的:

numpy.dtype(object, align, copy)
  • object – 要转换为的数据类型对象
  • align – 如果为 true,填充字段使其类似 C 的结构体。
  • copy – 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用

1.3 具体实例

实例 1:转换为int32

import numpy as np
dt = np.dtype(np.int32)
print(dt)

运行结果: 

 

例 2:int8, int16, int32, int64 四种数据类型可以使用字符串 ‘i1’, ‘i2′,’i4′,’i8’ 代替

import numpy as np
dt = np.dtype('i4')
print(dt)

运行结果:

 

实例 3:字节顺序标注

import numpy as np
dt = np.dtype('<i4')
print(dt)

运行结果:

 

例 4:结构化数据类型

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

运行结果:

 

例 5:将数据类型应用于 ndarray 对象

import numpy as np
a = np.array([(10,),(20,),(30,)]) 
print(a)
print('-'*50)
dt = np.dtype([('age',np.int8)]) 
a = np.array([(10,),(20,),(30,)], dtype = dt) 
print(a)

运行结果:

 

例 6:类型字段名可以用于存取实际的 age 列

import numpy as np
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print(a['age'])

运行结果:

 

例 7:下面的示例定义一个结构化数据类型 student,包含字符串字段 name,整数字段 age,及浮点字段 marks,并将这个 dtype 应用到 ndarray 对象。

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

运行结果:

 

例8:

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)

运行结果: 

 

二、Numpy数据类型转换 

2.1 浮点数据转换

例1:生成一个浮点数组(浮点型默认是 float64

import numpy as np
a=np.random.random (4)
print(a)
print(a.dtype)
print(a.shape)

运行结果:

例2:改变dtype为 float32,数组长度翻倍

import numpy as np
a=np.random.random (4)
a.dtype ="float32"
print(a)
print(a.dtype)
print(a.shape)#看下面有关shape的注释

运行结果:

 

 shape 是 NumPy 中 ndarray 对象的一个属性,用于表示数组的维度(dimensions)和每个维度的大小(size)。它以元组的形式返回,元组的每个元素表示数组在相应维度上的大小。

shape的含义

  • 对于 一维数组shape 返回数组的长度(即元素的数量)。
  • 对于 二维数组shape 返回一个元组,其中第一个元素表示数组的行数,第二个元素表示列数。
  • 对于 三维及更高维数组shape 返回一个多元素的元组,其中每个元素表示数组在对应维度上的大小。 

例3:改变dtype= float,默认类型就是float64,数组长度也变回最初的4

import numpy as np
a=np.random.random (4)
a.dtype ="float"
print(a)
print(a.dtype)
print(a.shape)

运行结果: 

 

2.2 整型数据转换

把a变为整数 int64,生成长度为4的整型数组

例4: 

import numpy as np
a=np.random.random (4)
a.dtype="int64"
print(a)
print(a.dtype)
print(a.shape)

运行结果:

 

2.3 浮点数转整数

例5: 

import numpy as np
b=np.array([1 ,2 ,3 ,4 ])
print(b.dtype)

运行结果:

 

例6:用 astype(int) 得到整数,并且不改变数组长度

import numpy as np
b=np.array([1 ,2 ,3 ,4 ],dtype=np.int32)
print(b)
print(b.shape)
print(b.dtype)

运行结果:

 

 

 

 

 

 

 

 

 

 

 


http://www.ppmy.cn/news/1573630.html

相关文章

使用Druid连接池优化Spring Boot应用中的数据库连接

使用Druid连接池优化Spring Boot应用中的数据库连接 使用Druid连接池优化Spring Boot应用中的数据库连接1. 什么是Druid连接池&#xff1f;2. 在Spring Boot中配置Druid连接池2.1 添加依赖2.2 配置Druid连接池2.3 配置参数详解 3. 启用Druid监控4. 总结 使用Druid连接池优化Spr…

如何通过 Homebrew 安装 Qt 并配置环境变量

如何通过 Homebrew 安装 Qt 并配置环境变量 Qt 是一个跨平台的应用程序开发框架&#xff0c;广泛用于开发图形界面应用。本文将详细介绍如何在 macOS 上通过 Homebrew 安装 Qt 并配置环境变量&#xff0c;以便在终端和 Qt Creator 中使用 Qt 工具。 步骤 1&#xff1a;安装 Ho…

【大模型】DeepSeek 高级提示词技巧使用详解

目录 一、前言 二、DeepSeek 通用提示词技巧 2.1 DeepSeek 通用提示词技巧总结 三、DeepSeek 进阶使用技巧 3.1 DeepSeek一个特定角色的人设 3.1.1 为DeepSeek设置角色操作案例一 3.1.2 为DeepSeek设置角色操作案例二 3.2 DeepSeek开放人设升级 3.2.1 特殊的人设&#…

二、《重学设计模式》-UML类图

UML类图常用的6种关系 依赖泛化&#xff08;继承&#xff09;实现关联聚合组合 类图常用表示图 依赖、泛化、实现都是从 依赖谁、继承谁、实现谁&#xff0c;箭头就指向谁 组合和聚合 都是从部分指向整体&#xff0c;菱形都指向整体 关联都是谁关联谁&#xff0c;箭头就指向…

【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑰】

ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase17 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月19日 关键词&#xff1a;UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-017测试用例 用例ID测试场景验证要点参考条款预期结果TC…

【响应式驾考培训网站模板】H5自适应源码下载|含教学管理系统+在线预约功能|多终端适配|可商用授权

(H5自适应)汽车驾校网站模板 驾照培训网站源码下载 后台地址&#xff1a;您的域名/admin.php 后台账号&#xff1a;admin 后台密码&#xff1a;123456 为了提升系统安全&#xff0c;请将后台文件admin.php的文件名修改一下。修改之后&#xff0c;后台登录地址就是&#xff…

LayoutLMv3:文档智能处理的多模态利器

在数字化时代,文档处理已成为众多领域不可或缺的一部分。从简单的文本编辑到复杂的图像识别,文档智能处理的需求日益增长。微软开源的 LayoutLMv3 项目,凭借其创新的多模态预训练方法,为文档处理领域带来了新的突破。本文将详细介绍 LayoutLMv3 的项目背景、核心优势、使用…

DeepSeek、微信、硅基流动、纳米搜索、秘塔搜索……十种不同方法实现DeepSeek使用自由

为了让大家实现 DeepSeek 使用自由&#xff0c;今天分享 10 个畅用 DeepSeek 的平台。 一、官方满血版&#xff1a;DeepSeek官网与APP 首推&#xff0c;肯定是 DeepSeek 的官网和 APP&#xff0c;可以使用满血版 R1 和 V3 模型&#xff0c;以及联网功能。 网址&#xff1a; htt…