【NumPy 数组索引、裁切,数据类型】

news2024/9/23 1:26:23

在这里插入图片描述

🤵‍♂️ 个人主页@老虎也淘气 个人主页
✍🏻作者简介:Python学习者
🐋 希望大家多多支持我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注

python之Numpy学习

  • NumPy 数组索引
    • 访问数组元素
    • 访问 3-D 数组
    • 负索引
  • NumPy 数组裁切
    • 裁切数组
    • 负裁切
    • STEP
    • 裁切 2-D 数组
  • NumPy 数据类型
    • Python 中的数据类型
    • NumPy 中的数据类型
    • 检查数组的数据类型
    • 用已定义的数据类型创建数组
    • 假如值无法转换会怎样?
    • 转换已有数组的数据类型

NumPy 数组索引

访问数组元素

数组索引等同于访问数组元素。

您可以通过引用其索引号来访问数组元素。

NumPy 数组中的索引以 0 开头,这意味着第一个元素的索引为 0,第二个元素的索引为 1,以此类推。

实例
从以下数组中获取第一个元素:

import numpy as np

arr = np.array([1, 2, 3, 4])

print(arr[0])

实例
从以下数组中获取第二个元素:

import numpy as np

arr = np.array([1, 2, 3, 4])

print(arr[1])

实例
访问第二维中的第五个元素:

import numpy as np

arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])

print('5th element on 2nd dim: ', arr[1, 4])

访问 3-D 数组

要访问 3-D 数组中的元素,我们可以使用逗号分隔的整数来表示元素的维数和索引。

实例
访问第一个数组的第二个数组的第三个元素:

import numpy as np

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

print(arr[0, 1, 2])

例子解释
arr[0, 1, 2] 打印值 6。

工作原理:
第一个数字代表第一个维度,其中包含两个数组:

[[1, 2, 3], [4, 5, 6]]

然后:

[[7, 8, 9], [10, 11, 12]]

由于我们选择了 0,所以剩下第一个数组:

[[1, 2, 3], [4, 5, 6]]

第二个数字代表第二维,它也包含两个数组:

[1, 2, 3]

然后:

[4, 5, 6]

因为我们选择了 1,所以剩下第二个数组:

[4, 5, 6]

第三个数字代表第三维,其中包含三个值:

4
5
6
由于我们选择了 2,因此最终得到第三个值:

6

负索引

使用负索引从尾开始访问数组。

实例
打印第二个维中的的最后一个元素:

import numpy as np

arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])

print('Last element from 2nd dim: ', arr[1, -1])

NumPy 数组裁切

裁切数组

python 中裁切的意思是将元素从一个给定的索引带到另一个给定的索引。

我们像这样传递切片而不是索引:[start:end]。

我们还可以定义步长,如下所示:[start:end:step]。

如果我们不传递 start,则将其视为 0。

如果我们不传递 end,则视为该维度内数组的长度。

如果我们不传递 step,则视为 1。

实例
从下面的数组中裁切索引 1 到索引 5 的元素:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

print(arr[1:5])

注释:结果包括了开始索引,但不包括结束索引。

实例
裁切数组中索引 4 到结尾的元素:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

print(arr[4:])

实例
裁切从开头到索引 4(不包括)的元素:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

print(arr[:4])

负裁切

使用减号运算符从末尾开始引用索引:

实例
从末尾开始的索引 3 到末尾开始的索引 1,对数组进行裁切:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

print(arr[-3:-1])

STEP

请使用 step 值确定裁切的步长:

实例
从索引 1 到索引 5,返回相隔的元素:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

print(arr[1:5:2])

实例
返回数组中相隔的元素:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

print(arr[::2])

裁切 2-D 数组

实例
从第二个元素开始,对从索引 1 到索引 4(不包括)的元素进行切片:

import numpy as np

arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])

print(arr[1, 1:4])

注释:请记得第二个元素的索引为 1。

实例
从两个元素中返回索引 2:

import numpy as np

arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])

print(arr[0:2, 2])

实例
从两个元素裁切索引 1 到索引 4(不包括),这将返回一个 2-D 数组:

import numpy as np

arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])

print(arr[0:2, 1:4])

NumPy 数据类型

Python 中的数据类型

默认情况下,Python 拥有以下数据类型:

strings - 用于表示文本数据,文本用引号引起来。例如 “ABCD”。
integer - 用于表示整数。例如 -1, -2, -3。
float - 用于表示实数。例如 1.2, 42.42。
boolean - 用于表示 True 或 False。
complex - 用于表示复平面中的数字。例如 1.0 + 2.0j,1.5 + 2.5j。

NumPy 中的数据类型

NumPy 有一些额外的数据类型,并通过一个字符引用数据类型,例如 i 代表整数,u 代表无符号整数等。

以下是 NumPy 中所有数据类型的列表以及用于表示它们的字符。

i - 整数
b - 布尔
u - 无符号整数
f - 浮点
c - 复合浮点数
m - timedelta
M - datetime
O - 对象
S - 字符串
U - unicode 字符串
V - 固定的其他类型的内存块 ( void )

检查数组的数据类型

NumPy 数组对象有一个名为 dtype 的属性,该属性返回数组的数据类型:

实例
获取数组对象的数据类型:

import numpy as np

arr = np.array([1, 2, 3, 4])

print(arr.dtype)

实例
获取包含字符串的数组的数据类型:

import numpy as np

arr = np.array(['apple', 'banana', 'cherry'])

print(arr.dtype)

用已定义的数据类型创建数组

我们使用 array() 函数来创建数组,该函数可以使用可选参数:dtype,它允许我们定义数组元素的预期数据类型:

实例
用数据类型字符串创建数组:

import numpy as np

arr = np.array([1, 2, 3, 4], dtype='S')

print(arr)
print(arr.dtype)

对于 i、u、f、S 和 U,我们也可以定义大小。

实例
创建数据类型为 4 字节整数的数组:

import numpy as np

arr = np.array([1, 2, 3, 4], dtype='i4')

print(arr)
print(arr.dtype)

假如值无法转换会怎样?

如果给出了不能强制转换元素的类型,则 NumPy 将引发 ValueError。

ValueError:在 Python 中,如果传递给函数的参数的类型是非预期或错误的,则会引发 ValueError。

实例
无法将非整数字符串(比如 ‘a’)转换为整数(将引发错误):

import numpy as np

arr = np.array(['a', '2', '3'], dtype='i')

转换已有数组的数据类型

更改现有数组的数据类型的最佳方法,是使用 astype() 方法复制该数组。

astype() 函数创建数组的副本,并允许您将数据类型指定为参数。

数据类型可以使用字符串指定,例如 ‘f’ 表示浮点数,‘i’ 表示整数等。或者您也可以直接使用数据类型,例如 float 表示浮点数,int 表示整数。

实例
通过使用 ‘i’ 作为参数值,将数据类型从浮点数更改为整数:

import numpy as np

arr = np.array([1.1, 2.1, 3.1])

newarr = arr.astype('i')

print(newarr)
print(newarr.dtype)

实例
通过使用 int 作为参数值,将数据类型从浮点数更改为整数:

import numpy as np

arr = np.array([1.1, 2.1, 3.1])

newarr = arr.astype(int)

print(newarr)
print(newarr.dtype)

实例
将数据类型从整数更改为布尔值:

import numpy as np

arr = np.array([1, 0, 3])

newarr = arr.astype(bool)

print(newarr)
print(newarr.dtype)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6年测开经验,从功能测试到测试开发,我的每一步都经过了深思熟虑...

蓦然回首,软件测试风风雨雨的这几年,起初每天的工作只是鼠标点点点,我还真不知道怎么办,闲的时候真的怀疑自己的存在价值,每天拿着7000的工资,飘荡在繁华的深圳,吃不饱也饿不死,未来…

阿里 p8 私藏 MyBatis 笔记,从入门到精通,纵享源码细节

前言 越来越多的企业已经将 MyBatis 使用到了正式的生产环境,我认为流行的原因就在于绝大部分项目都是面向表结构编程的,把 Java 对象仅当成数据容器,查询和模型变更都设计在一张表上,所谓业务逻辑就是一堆增删改查的 sql 集合&a…

Cadence Allegro PCB设计88问解析(二十一) 之 Allegro中更新器件封装(Footprint)

一个学习信号完整性仿真的layout工程师 今天和大家简单介绍Allegro中如何更新PCB封装,在我们导入原理图网表,PCB的封装是必不可少的,但是可能有些为了前期布局评审,有的封装是临时的,那么就需要后续更新正确的封装。下…

02 Java起步

目录 第一章:注释 1.1 概述 1.2 Java 中的注释 第二章:关键字 2.1 概述 2.2 Java 中的关键字 第三章:标识符 3.1 概述 3.2 标识符的命名规则(必须遵守) 3.3 标识符的命名规范 第四章:数据类型以…

第十四届蓝桥杯集训——JavaC组首篇——环境搭建(win10)

还有9天就截止报名了,我们也算正式开始培训了,今年希望能取得更好的成绩。 今年的蓝桥杯从环境开始——本博客为win10电脑的Java_JDK环境搭建: 学生机环境-Java编程环境(第十四届大赛) 链接: https://pan.baidu.com…

软件测试行业真的饱和了吗?一线大厂年薪100W的测开岗位还很缺人!

在一线大厂,没有测试这个岗位,只有测开这个岗位。这几年,各互联网大厂技术高速更新迭代,软件测试行业也正处于转型期。传统的功能测试技术逐步淘汰,各种新的测试技术层出不穷,测试人员的薪资也水涨船高。与…

【Docker】基础

文章目录Docker什么是Docker虚拟机和容器Docker 底层原理Docker 优点关键技术Docker 推荐视频课程配套食用:https://www.bilibili.com/video/BV1gr4y1U7CY/?vd_source6d95a05fa9867baaa8ea7c5c52faf4e6 什么是Docker Docker,容器虚拟化技术&#xff…

从浪潮登顶NuScenes榜首解读自动驾驶AI感知技术的发展

导读: “自动驾驶是集感知、决策、交互于一体的技术 环境感知能力作为自动驾驶的第一个环节,是车辆与环境交互的纽带 通过“摄像头、毫米波雷达、超声波雷达、激光雷达”等各类传感器设备,感知环境的手段日趋多元化 同时,在平…

STM32 EXT for GPIO

EXT 描述: EXTI(中断/事件控制器)包括20个相互独立的边沿检测电路并且能够向处理器内核产生中断 请求或唤醒事件。EXTI有三种触发类型:上升沿触发、下降沿触发和任意沿触发。EXTI中的每 一个边沿检测电路都可以独立配置和屏蔽 E…

java-文件上传-excel存入数据库全代码及流程(附前端代码)

今天给大家带来的是文件上传中比较常用的,上传excel文件,将表格中的数据存入数据库中的一个转化的工具类;大致的流程是:前端点击上传按钮-->选择需要上传的excel表格-->确认上传--> 文件传到后台-->后台处理file文…

[附源码]计算机毕业设计酒店在线预约咨询小程序Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

解决穿山甲Gromore广告在Oppo上报广告病毒Android.Virus.AdCheat.AdCut.A

描述 在上架Oppo的时候审核打回了发现了病毒。提示如下: 自动化检测“安全”项未通过,病毒名称:Android.Virus.AdCheat.AdCut.A,病毒描述:该病毒安装启动后,会展示非官方广告,造成盗源消耗和信息泄露,请卸…

[附源码]Python计算机毕业设计Django行程规划app

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

JUC07-ConcurrentHashMap

一、HashMap中的死链问题 多个线程对hashmap进行扩容时需要将原有数据转移到新的table数组中,这个过程中会重新计算每个元素对应的数组下标从而改变元素的next指针,而另一个线程重复对该链表进行迁移时可能会导致循环链表的产生 原始链表,格…

虹科案例 | 利用激光测距传感器进行锯齿定位

PART ONE 应用描述 在这项应用中,两个激光测距传感器分别安装在一个凸出部分的末端的两侧,用以测量其两侧到锯齿的距离的差。一个微型控制器会按照预设,记录测量数据并提供一个方便快捷的前后位置校准的图像,以便检查。当操作者触…

通过图卷积网络从单词语义学习到句子句法,用于基于方面的情感分析

Learning from word semantics to sentence syntax by graph convolutional networks for aspect-based sentiment analysis 1.Introduction 据我们所知,NLP 的基本动机是训练计算机处理明显属于人类的文本 。也就是说,在当前方法中整合语义信息和句法…

配音app开发,创建专属声音作品

娱乐生活的增加让人们开始向配音方面涉猎,配音逐渐变得大众化。配音对于专业性要求并不高,任何一个对配音有兴趣的用户都可以对自己喜欢的影视剧进行配音,同一个片段不同人在配音时所带的情感不同,最终呈现的听觉效果也不同&#…

VS Code 新增自定义字体

这里以 JetBrainsMono 字体为例 1、下载好字体文件安装 2、安装完成后进入系统字体文件夹 C:\Windows\Fonts 找到刚刚安装好的字体,复制字体文件名:JetBrains Mono NL 3、打开 VS Code 软件,依次点击左下角设置按钮 —> 常用设置 —>…

圣诞节教你如何用Html+JS+CSS绘制3D动画圣诞树

上篇文章给大家提供了一个如何生成静态圣诞树的demo。但是那样还不够高级&#xff0c;如何高级起来&#xff0c;当然是3D立体带动画效果了。 先看效果图&#xff1a; 源码如下&#xff1a; <!DOCTYPE html> <html lang"en" > <head> <meta c…

Git实战(五)| 让工作更高效,搞定Git的分支管理

上一篇讲到Git的分支管理实操&#xff0c;在线合并和本地合并都进行了实操。毕竟&#xff1a;光说不练是假把式。而只练不整理&#xff0c;只能是傻把式了。分支管理到底如何进行管理呢&#xff1f; 先以GitLab上的一张经典的图打头&#xff0c;作为一个总体概览&#xff0c;也…