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

numpy/pytorch 高级索引(整数数组索引 布尔索引)

        Python高级索引是一个很trick的操作,用的好可以提高效率,但是如果不了解也经常容易看不懂别人代码写的什么意思........

        高级索引大致可分为整数数组索引、布尔索引及花式索引三类

整数数组索引

整数数组索引指使用同形状的多个数组分别指定元素的所有维度(不指定的维度也可以用切片:或省略号...与索引数组组合),可精准取出一批指定位置的元素,按照给定数组形状返回。

例1:

取出x中(0,0),(1,1)和(2,0)位置处的元素。

 传入的位置指定数组也可为多维

例2

取出x[[(0,0),(0,2)],[3,0, 3,2]]的元素

传入的索引是什么形式,是几维的,输出值就是什么形式

布尔索引

我们可以通过一个布尔数组来索引目标数组。

布尔数组形状为目标数组的维度

x = np.arange(27).reshape(3,3,3)
print(x)

输出:

array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]],

       [[18, 19, 20],
        [21, 22, 23],
        [24, 25, 26]]])

使用布尔数组索引位置:

idx1 = np.array([0,1,1], dtype=bool)
idx2 = np.array([[[ 0,  0,  0],
                    [ 0,  0,  0],
                    [ 0,  0,  0]],

                   [[ 0,  1,  1],
                    [ 0,  0,  0],
                    [ 0,  0,  0]],

                   [[ 0,  0,  0],
                    [ 0,  0,  0],
                    [ 0,  0,  0]]], dtype=bool)

print(x[idx1])
print(x[idx2])

输出为

[[[ 9 10 11]
  [12 13 14]
  [15 16 17]]

 [[18 19 20]
  [21 22 23]
  [24 25 26]]]#x[idx1]

 [10 11] #x[idx2]

也就是说,可以构造一个和当前数组维度相同的布尔数组,然后将布尔数组当作index,可以取出当前数组中值为true位置的值

布尔索引也通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。

取出大于5的元素

 过滤掉为nan的值

 

 过滤掉复数元素

通过布尔值取某几行

 

花式索引 

相关文章:

  • Python Type Hint(类型标注/类型提示) (箭头 ->)(type annotation)
  • Pytorch清空显存缓冲区(torch.cuda.empty_cache)
  • Python ctx
  • wandb(Weights Biases) 深度学习轻量级可视化工具
  • Pytorch分布式训练/多卡训练(二) —— Data Parallel并行(DDP)(2.1)(基本概念代码框架)
  • Pytorch分布式训练/多卡训练(二) —— Data Parallel并行(DDP)(2.2)(代码示例)(BN同步主卡保存梯度累加多卡测试inference)
  • Python itertools库
  • Pytorch模型提速
  • batchsize大小对模型训练的影响
  • Pytorch混合精度(FP16FP32)(AMP自动混合精度)/半精度 训练(一) —— 原理(torch.half)
  • CUDA编程(一) —— 相关概念基础知识
  • CUDA编程(二) —— CUDA编程模型
  • Python Fastai框架
  • ubuntu安装docker
  • Linux(ubuntu)(十三) —— (系统)服务管理 (systemctlservicechkconfig)服务的运行级别(Runlevel)
  • 2017-09-12 前端日报
  • centos安装java运行环境jdk+tomcat
  • Hibernate【inverse和cascade属性】知识要点
  • Java面向对象及其三大特征
  • java中具有继承关系的类及其对象初始化顺序
  • PHP CLI应用的调试原理
  • Puppeteer:浏览器控制器
  • Python爬虫--- 1.3 BS4库的解析器
  • python学习笔记-类对象的信息
  • swift基础之_对象 实例方法 对象方法。
  • Wamp集成环境 添加PHP的新版本
  • 爱情 北京女病人
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 高度不固定时垂直居中
  • 官方解决所有 npm 全局安装权限问题
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 说说动画卡顿的解决方案
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • Java数据解析之JSON
  • Prometheus VS InfluxDB
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (八)Spring源码解析:Spring MVC
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)基于IDEA的JAVA基础12
  • (转)3D模板阴影原理
  • (转)Linq学习笔记
  • (转)为C# Windows服务添加安装程序
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET MVC第三章、三种传值方式
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .Net接口调试与案例
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET连接数据库方式
  • @在php中起什么作用?
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)