精通 Numpy 数组:详解数据类型查看、转换与索引要点

1、查看数据类型

通过访问数组的dtype属性时会创建一个表示数据类型的对象, 这个对象其实就是numpy.dtype类型的对象。

如果要想获取数组中元素数据类型的名称,则需要先通过数组访问dtype属性得到numpy. dtype类型的对象,再通过该对象访问name属性进行获取,示例代码如下:

arr_one=np.array([[1,2,3],[4,5,6]])
arr_one.dtype.name 
输出:'int32'

在上述代码中,首先通过array()函数创建了一个数组arr_one,然后通过arr_one访问dtype属性获取数据类型对象,通过该对象访问name属性获取数据类型的名称。

从上述结果中可以看出,数组中元素的数据类型是int32。从数据类型的命名方式上可以看出,NumPy的数据类型是由一个类型名和元素位长的数字组成,例如,int32的int是类型名, 32是元素位长的数字。

如果在创建数组时,没有显式地指明数据的类型,那么解释器会根据列表或元组中元素的类型推导出来。默认情况下,通过zeros()、ones()、empty()函数创建的数组中元素的数据类型为float64。以下为NumPy数组常用的数据类型。

数据类型

  

  

bool

布尔类型,值为TrueFalse

b

int8、uint8

有符号和无符号的8位整数

i、u

int16、uint16

有符号和无符号的16位整数

i2、u2

int32、uint32

有符号和无符号的32位整数

i4、u4

int64、uint64

有符号和无符号的64位整数

i8、u8

float16

半精度浮点数(16位,其中正负号1位,指数5位,精度10位)

f2

float32

单精度浮点数(32位,其中正负号1位,指数8位,精度23位)

f4

float64

双精度浮点数(64位,其中正负号1位,指数11位,精度52位)

f8

complex64

复数,分别用两个32位浮点数表示实部和虚部

c8

complex128

复数,分别用两个64位浮点数表示实部和虚部

c16

object_

Python对象

o

string_

固定长度的字符串类型

s

unicode_

固定长度的unicode类型

u

2、转换数据类型

NumPy中提供了astype()方法可以将数组中元素的数据类型转换为其他数据类型。例如,将数组中元素的数据类型由整数转换为浮点数,示例代码如下:

>>> data =np.array([[1,2,3],[4,5,6]])
>>> data.dtype.name
输出:'int32'
>>> float_data =data.astype(np.float32) #将数据类型转换为float32
>>> float_data.dtype.name
输出:'float32'

上述代码中,数组中元素的数据类型由int32转换为float32。若需要将元素的类型由浮点数类型转换为整数类型,则会将浮点数中小数点后面的部分截掉,具体示例代码如下:

>>> float_data =np.array([1.2,2.9,3.5])
>>> float_data
输出:array([1.2, 2.9, 3.5])
>>> int_data =float_data.astype(np.int32) #将数据类型转换为int32
>>> int_data
输出:array([1, 2, 3])

通过比较上述两个结果可以看出,无论浮点数小数点后面的数字是多少,转换成整数后都会被截掉。如果数组中的元素是字符串,且字符串中的每个字符都是数字,则也可以使用astype()方法将字符串转换为数值类型。例如,将数组中元素的类型由字符串类型转换为整数类型,具体代码如下:

>>> str_data=np.array(['1','2','3'])
>>> int_data=str_data.astype(np.int64)
>>> int_data
输出:array([1, 2, 3], dtype=int64)

3、数组的索引方式

NumPy数组支持索引和切片操作,且提供了比Python序列更丰富的索引功能,它除了可以使用基本的整数索引之外,还可以使用花式索引和布尔索引访问数组中的元素。

(1)数组的索引方式

数组是通过索引的方式标记元素的位置,数组的类型不同,索引方式也会有一些区别。下面以一维数组和二维数组为例,介绍这两种类型数组的索引方式。

  • 一维数组的索引方式

一维数组与Python中序列类型的结构类似,它们的索引方式是相同的。正向索引从左向右依次递增,即左边数第一个元素的索引是0,第二个元素的索引是1,依此类推;反向索引从右向左依次递减,即从右边数第一个元素的索引是-1,第二个元素的索引是-2,依此类推。一维数组的索引方式如下图所示。

图片

从图中可以看出,数组中每个元素对应两种索引,分别是正向索引和反向索引。如果想要从数组中获取元素0,则需要使用正向索引7或反向索引-3进行获取。

  • 二维数组的索引方式

二维数组比一维数组要复杂一些,它里面的每个元素对应行索引和列索引,其中行索引和列索引可以是正向索引,也可以是反向索引。二维数组的索引方式如下图所示。

图片

在上图中,二维数组是一个5行5列的数组,每个元素有行索引和列索引,此时通过行索引或列索引获取某行或某列元素。如果想获取二维数组中的单个元素,必须同时指明这个元素对应的行索引和列索引。例如,元素13可以使用行索引-3或2和列索引-3或2获取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/493880.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式系统架构5:限流设计模式

这是小卷对分布式系统架构学习的第5篇文章,今天来学习限流器和限流设计模式 1.为什么要限流? 任何一个系统的运算、存储、网络资源都不是无限的,当系统资源不足以支撑外部超过预期的突发流量时,就应该要有取舍,建立面…

山景BP1048蓝牙音频任务后台运行设置方法

1、 问题 山景BP1048提供的蓝牙音箱SDK蓝牙音频是不能在后台运行的。例如&#xff1a;现在进入U盘模式播放蓝牙音乐&#xff0c;那么此时蓝牙就会关闭。 但是在特定场景下&#xff0c;需要蓝牙保持连接。 2、解决办法 打开sys_param.c文件 #include <string.h> #incl…

【AI知识】为什么激活值过大/过小,初始权重过大/过小,可能导致梯度爆炸/消失?具体例子举例

1.梯度爆炸的公式计算 计算一个简单的两层神经网络的前向传播和反向传播过程。在这里&#xff0c;我们故意选择过大的初始权重值&#xff0c;查看梯度如何爆炸。 总结&#xff1a; 梯度值很大&#xff0c;这是梯度爆炸的一个典型例子。此时&#xff0c;如果我们使用梯度下降进…

在福昕(pdf)阅读器中导航到上次阅读页面的方法

文章目录 在福昕(pdf)阅读器中导航到上次阅读页面的方法概述笔记用书签的方法来导航用导航按钮的方法来导航 备注END 在福昕(pdf)阅读器中导航到上次阅读页面的方法 概述 喜欢用福昕(pdf)阅读器来看pdf文件。 但是有个小问题困扰了我好久。 e.g. 300页的pdf看了一半&#xff…

CCF-GESP 等级考试 2023年9月认证C++一级真题解析

2023年9月真题 一、单选题&#xff08;每题2分&#xff0c;共30分&#xff09; 正确答案&#xff1a;C 解析&#xff1a;考察知识点&#xff1a;计算机基础 本题属于考察计算机基础知识中的存储设备问题&#xff1b;内存是一种存储设备&#xff0c;也可以考虑关联内存中的“存…

重拾设计模式--建造者模式

文章目录 建造者模式&#xff08;Builder Pattern&#xff09;概述建造者模式UML图作用&#xff1a;建造者模式的结构产品&#xff08;Product&#xff09;&#xff1a;抽象建造者&#xff08;Builder&#xff09;&#xff1a;具体建造者&#xff08;Concrete Builder&#xff…

关于使用拓扑排序算法实现解析勾稽关系优先级的研究和实现

1. 勾稽关系 勾稽关系&#xff08;Reconciliation Relationship&#xff09;是一个财务术语&#xff0c;指的是在会计和审计中&#xff0c;不同会计报表或报表项目之间存在的逻辑对应关系。这种关系可以用来验证会计数据的准确性和完整性。勾稽关系通常体现在以下几个方面&…

电商项目-网站首页高可用(二)

一、LUA基本语法 lua有交互式编程和脚本式编程。 交互式编程就是直接输入语法&#xff0c;就能执行。 脚本式编程需要编写脚本文件&#xff0c;然后再执行。 一般采用脚本式编程。&#xff08;例如&#xff1a;编写一个hello.lua的文件&#xff0c;输入文件内容&#xff0c;并执…

flink实现复杂kafka数据读取

接上文&#xff1a;一文说清flink从编码到部署上线 环境说明&#xff1a;MySQL&#xff1a;5.7&#xff1b;flink&#xff1a;1.14.0&#xff1b;hadoop&#xff1a;3.0.0&#xff1b;操作系统&#xff1a;CentOS 7.6&#xff1b;JDK&#xff1a;1.8.0_401。 常见的文章中&…

第十五届蓝桥杯Scratch01月stema选拔赛—排序

排序 具体要求&#xff1a; 1). 点击绿旗&#xff0c;在舞台上出现4张点数不同的扑克牌&#xff0c;牌上的点数是随机的&#xff08;4-9点&#xff09;&#xff0c;如图所示&#xff1b; 完整题目可点击下方链接查看&#xff1a; 排序_scratch_嗨信奥-玩嗨信息奥林匹克竞赛-…

图形学笔记 - 5. 光线追踪2 - 加速结构

目录 使用AABB加速光线追踪 Uniform Spatial Partitions (Grids) 均匀空间划分 空间划分 KD树预处理 KD-Tree数据结构 遍历kd树 对象划分 & Bounding Volume Hierarchy 层次包围盒 BVH BVH遍历 空间划分与物体划分呢 GTC news: DLSS、RTXGI 实时光线追踪 使用AAB…

计算机毕业设计原创定制(免费送源码):NodeJS+MVVM+MySQL 樱花在线视频网站

目 录 摘要 1 1 绪论 1 1.1研究背景 1 1.2系统设计思想 1 1.3B/S体系工作原理 1 1.4node.js主要功能 2 1.5论文结构与章节安排 3 2 樱花在线视频网站分析 4 2.1 可行性分析 4 2.2 系统流程分析 4 2.2.1数据增加流程 5 2.3.2数据修改流程 5 2.3.3数据删除流程 5 …

SpringBoot 启动类 SpringApplication 二 run方法

配置 在Program arguments配置2个参数&#xff1a;--server.port8081 --spring.profiles.activedev。 run方法 run方法执行结束代表SpringBoot启动完成&#xff0c;即完成加载bean。 // ConfigurableApplicationContext 是IOC容器 public ConfigurableApplicationContext ru…

如何调大unity软件的字体

一、解决的问题&#xff1a; unity软件的字体太小&#xff0c;怎么调大点&#xff1f;二、解决方法&#xff1a; 1.操作步骤&#xff1a; 打开Unity编辑器> Edit>preferences> UI Scaling>Use custom scaling value&#xff08;取消勾选“使用默认桌面设置”&…

SYD881X RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟

RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟 这里RTC做了两个定时器一个是12秒,一个是185秒: #define RTCEVT_NUM ((uint8_t) 0x02)//当前定时器事件数#define RTCEVT_12S ((uint32_t) 0x0000002)//定时器1s事件 /*整分钟定时器事件&#xff0c;因为其余的…

内置函数.

日期函数 current_date/time() 日期/时间 获得年月日&#xff1a; 获得时分秒&#xff1a; 获得时间戳&#xff1a;日期时间 now()函数 体会date(datetime)的用法&#xff1a;只显示日期 在日期的基础上加日期&#xff1a;按照日历自动计算 关键字为 intervalinterval 后的数值…

PHP 微信棋牌开发全解析:高级教程

PHP - 多维数组详解 多维数组是 PHP 中一种强大的数据结构&#xff0c;指的是一个数组的元素中可以包含一个或多个数组。它常用于存储复杂的嵌套数据&#xff0c;如表格数据或多层次关系的数据结构。 注释&#xff1a; 数组的维度表示您需要指定索引的层级数&#xff0c;以访问…

【Java】递归算法

递归的本质&#xff1a; 方法调用自身。 案例1. 斐波那契数列 1 1 2 3 5 8 13 21 .. f(n)f(n-1)f(n-2) 方法的返回值&#xff1a; 只要涉及到加减乘除&#xff0c;就是int,其他的就是void。 案例2. 青蛙跳台 青蛙一次可以跳一级台阶&#xff0c;也可以跳两级台阶&#xff…

JVM简介—1.Java内存区域

大纲 1.运行时数据区的介绍 2.运行时数据区各区域的作用 3.各个版本内存区域的变化 4.直接内存的使用和作用 5.站在线程的角度看Java内存区域 6.深入分析堆和栈的区别 7.方法的出入栈和栈上分配、逃逸分析及TLAB 8.虚拟机中的对象创建步骤 9.对象的内存布局 10.对象的…

大腾智能CAD:国产云原生三维设计新选择

在快速发展的工业设计领域&#xff0c;CAD软件已成为不可或缺的核心工具。它通过强大的建模、分析、优化等功能&#xff0c;不仅显著提升了设计效率与精度&#xff0c;还促进了设计思维的创新与拓展&#xff0c;为产品从概念构想到实体制造的全过程提供了强有力的技术支持。然而…