day01-切片和索引

day01-切片和索引

ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中list 的切片操作一样。

ndarray数组可以基于0-n的下标进行索引

在这里插入图片描述

  • 注意,数组切片并不像列表切片会重新开辟一片空间,而是地址引用,需要使用.copy()进行复制。
array = np.array([0,1,2,3,4,5,6,7,8,9])
ar1 = array[2:7:2]
#ar1为array([2,4,6])

在这里插入图片描述

特点:左闭右开【 } 用法同列表切片

多维切片

ar4 = array([[0,1,2,3],[4,5,6,7],[8,9,10,11],[12,13,14,15]])ar4.ndim
#返回ar4的秩(几维)输出2ar4[2]
#切片为下一维度的一个元素,所以是一维数组
#输出array([8,9,10,11])ar4[2][2]
#输出10ar4[2:]
#输出第2行以后的
array([[8,9,10,11],[12,13,14,15]])
  • 切片还可以用省略号表示"…",如果在行位置使用省略号,那么返回值将包含所有行元素,反之,则包含所有列元素
ar4[...,1]
#取第一列1,5,9,13ar4[...,1:]
#返回第二列后的所有项
"""
1,2,3
5,6,7
9,10,11
13,14,15
"""#注意
ar4[1,2] 
ar4[1][2]
#一个是切片一个是取索引ar4[...][1]
#取了所有行再取第二行
#区别于
ar4[...,1]

获取四个脚上的元素组成2*2

b = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]        ])a = b[[0,0,3,3],[0,2,0,2]]  #取b[0][0],b[0][2],b[3][0],b[3][2]组成数列即b【【行号集】【列号集】】r = np.array([[0,0],[3,3]]).reshape(4)
l =  np.array([[0,2],[0,2]]).reshape(4)
s = b[r,l].reshape((2,2))s
a = np.array([[1,2,3],[4,5,6],[7,8,9],
])
#行取得2行和3行,列取得2列和3列
b = a[1:3,1:3]  #等价于b = a[[1,2],[1,2]]
#1:3 == [1,2]c = a[1:3,[1,2]]
#...表示所有行,1:表示从第二列开始的所有列
d = a[...,1:]print(b)
print(c)
print(d)

创建一个下图的数列

在这里插入图片描述

z = np.zero((8,8),dtype = int)
z[1::2,::2] = 1
z[::2,1::2] = 1
z

2.布尔数组索引

当输出的结果需要经过布尔运算(如比较运算)时,此时回事用到另一种高级索引方式,即布尔数组索引

返回数组中大于6的所有元素

x = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
x[x>6]
#array([7,8,9,10,11])

联系

1.提取所有奇数

2.将奇数值修改为-1

x = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])x[x%2==1]x[x%2==1] = -1

筛选出指定区间的数据

  • & 和
  • | 或
x = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
#以上x中大于4并且大于9的所有元素
x[(x<4)&(x<9)]
#以上x中大于4或者大于9的所有元素
x[(x<4)|(x<9)]

True和False的形式表示需要和不需要的数据

a = np.array(12).reshape((3,4))
array([		  [0,1,2,3],[4,5,6,7],[8,9,10,11]        ])
row1 = np.array([False,True,True])  
a[row1]		#第一行不要,第二行要,第三行要
#相当于 a[[1,2],:]

得到:

array([       [4,5,6,7],[8,9,10,11]        ])
column = np.array([True,False,True,False])
a[:,column]
#相当于 a[:,[0,2]]

得到:

array([       [0,4,8],[2,6,10]        ])
a[row1,column]
#a[[False,True,True],[True,False,True,False]]
#注意前后的帧需要一样,True的个数需要保持一致,不一致会报错
#等价于:
a[[1,2],[0,1]]

当需要选择的行数和列数不一致时,如选择第一行和最后一行的1,3,4列

a[[0,-1],[0,2,3]]

上述方法错误!形状不一样

1.先选行再选列,即先读取数组a的第一列和最后一列,保存到temp中然后再筛选相应的列即可

#第一步:先选行
temp = a[[0,-1],:]#第二部再选列
temp[:,[0,2,3]]#合并一条
a[[0,-1],:][:,[0,2,3]]

一行和最后一行的1,3,4列

a[[0,-1],[0,2,3]]

上述方法错误!形状不一样

1.先选行再选列,即先读取数组a的第一列和最后一列,保存到temp中然后再筛选相应的列即可

#第一步:先选行
temp = a[[0,-1],:]#第二部再选列
temp[:,[0,2,3]]#合并一条
a[[0,-1],:][:,[0,2,3]]

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

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

相关文章

算法day1 两数之和 两数相加 冒泡排序 快速排序

两数之和 最简单的思维方式肯定是去凑两个数&#xff0c;两个数的和是目标值就ok。这里两遍for循环解决。 两数相加 敲了一晚上哈哈&#xff0c;结果超过int范围捏&#xff0c;难受捏。 public class Test2 {public static void main(String[] args) { // ListNode l1 …

IO多路复用学习

Linux中的I/O多路复用 相关基础概念 在学习I/O多路复用之前&#xff0c;先学习一些相关的基础概念&#xff0c;便于理解。 内核缓冲区和用户缓冲区 &#x1f62e; CPU 上会运行两种程序&#xff0c;一种是操作系统的内核程序&#xff08;也称为系统程序&#xff09;&#x…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(二十)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 30 节&#xff09; P30《29.数据持久化-用户首选项》 实现数据持久化在harmonyOS中有很多种方式&#xff0c;比较常见的是以下两…

OpenCV教程02:图像处理系统1.0(翻转+形态学+滤波+缩放+旋转)

-------------OpenCV教程集合------------- Python教程99&#xff1a;一起来初识OpenCV&#xff08;一个跨平台的计算机视觉库&#xff09; OpenCV教程01&#xff1a;图像的操作&#xff08;读取显示保存属性获取和修改像素值&#xff09; OpenCV教程02&#xff1a;图像处理…

WIN32核心编程 - 数据类型 错误处理 字符处理

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 数据类型 基本数据类型 Win32基本数据类型 错误处理 C语言中的错误处理 C中的错误处理 Win32中的错误处理 字符处理 C/C WIN32 字符处理 数据类型 基本数据类型 C/C语言定义了一系列…

Rocky Linux 9 系统OpenSSH CVE-2024-6387 漏洞修复

Rocky Linux 9系统 OpenSSH CVE-2024-6387 漏洞修复 1、漏洞修复2、修复思路3、修复方案3.1、方案一3.2、方案二 4、总结5、参考 1、漏洞修复 CVE-2024-6387&#xff1a;regreSSHion&#xff1a;OpenSSH 服务器中的远程代码执行&#xff08;RCE&#xff09;&#xff0c;至少在…

【目标检测】DINO

一、引言 论文&#xff1a; DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection 作者&#xff1a; IDEA 代码&#xff1a; DINO 注意&#xff1a; 该算法是在Deformable DETR、DAB-DETR、DN-DETR基础上的改进&#xff0c;在学习该算法前&#…

《IT 领域准新生暑期预习指南:开启未来科技之旅》

IT专业入门&#xff0c;高考假期预习指南 高考的落幕&#xff0c;只是人生长途中的一个逗号&#xff0c;对于心怀 IT 梦想的少年们&#xff0c;新的征程已然在脚下铺展。这个七月&#xff0c;当分数尘埃落定&#xff0c;你们即将迈向新的知识殿堂&#xff0c;而这个假期&#…

Git使用[推送大于100M的文件后解救办法]

推送大于100M的文件后解救办法 本文摘录于&#xff1a;https://blog.csdn.net/u012150602/article/details/122687435只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 当有文件大于100M的时候在提交的时候没有问题,但是在push的似乎就不行…

番外篇 | 手把手教你如何去更换YOLOv5的检测头为ASFF_Detect

前言:Hello大家好,我是小哥谈。自适应空间特征融合(ASFF)的主要原理旨在解决单次检测器中不同尺度特征的不一致性问题。具体来说,ASFF通过动态调整来自不同尺度特征金字塔层的特征贡献,确保每个检测对象的特征表示是一致且最优的。本文所做出的改进是将YOLOv5的检测头更换…

程序算法设计分析

动态规划和分治、贪心相比有什么区别&#xff1f;各自的优缺点&#xff1f; 分治算法特征&#xff1a; 1&#xff09;规模如果很小&#xff0c;则很容易解决。//一般问题都能满足 2&#xff09;大问题可以分为若干规模小的相同问题。//前提 3&#xff09;利用子问题的解&#x…

O2OA(翱途)开发平台 V9.1 即将发布,更安全、更高效、更开放

尊敬的O2OA(翱途)平台合作伙伴、用户以及亲爱的开发小伙伴们&#xff0c;O2OA(翱途)平台 V9.1将于7月3日正式发布&#xff0c;届时欢迎大家到O2OA官网部署下载及体验最新版本。新版本我们在如下方面做了更大的努力&#xff1a; 1.扩展数据库兼容性和功能范围&#xff1a;在O2OA…

基于Web技术的教育辅助系统设计与实现(SpringBoot MySQL)+文档

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

汽车电子工程师入门系列——CAN 规范系列通读

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

使用ps给gif动图抠图

目录 导入gif图片 打开时间轴 选择图片 魔棒抠图-初步抠图 套索抠图-精准抠图 导入gif图片 打开时间轴 因为gif动图实际上多张图片实现的效果&#xff0c;所以如果要给gif抠图&#xff0c;就得挨个给每个时间线的图片抠图 点击窗口->时间轴 选择图片 在时间轴上选择要…

以 Vue 3 项目为例,多个请求下如何全局封装 Loading 的展示与关闭?其中大有学问!

大家好,我是CodeQi! 项目开发中,Loading 的展示与关闭是非常关键的用户体验设计。 当我们的应用需要发起多个异步请求时,如何有效地管理全局 Loading 状态,保证用户在等待数据加载时能有明确的反馈,这是一个值得深入探讨的问题。 本文将以 Vue 3 项目为例,详细讲解如…

eventloop 事件循环机制 (猜答案)

// eventloop 事件循环机制// console.log(555);setTimeout(() > {console.log(666);})let p new Promise((resolve,reject)>{// 同步执行console.log(111);resolve();});// promise 的回调函数是异步的微任务p.then(v > {console.log(222);}, r > {console.log(r…

STMF4学习笔记(天空星)

前言&#xff1a;本篇笔记参考嘉立创文档&#xff0c;连接放在最后 #RTC相关概念定义 Real-Time Clock 缩写 RTC 翻译 实时时钟&#xff0c;是单片机片内外设的一种&#xff0c;作用于提供准确的时间还有日期&#xff0c;这个外设有独立的电源&#xff0c;当单片机停止供电…

Java同步包装器

通过 Collections.synchronizedList() 方法将一个普通的 ArrayList 包装成了线程安全的 List&#xff1a; import java.util.*;public class SynchronizedWrapperExample {public static void main(String[] args) {// 创建一个非线程安全的 ArrayListList<String> list…

AzureDataFactory Dataverse connector自动处理了分页问题(单次查询上限5000条的限制)

众所周知&#xff0c;在用fetch执行D365的查询时&#xff0c;单次的查询是5000条&#xff0c;如果超过5000条则需要自己处理分页&#xff0c;添加额外的处理逻辑&#xff0c;但在ADF中&#xff0c;Dataverse connector已经自动处理了分页&#xff0c;我们可以很简单的做个POC. …