numpy/pytorch 高级索引(花式索引(index索引&数组索引&tuple索引) & 布尔索引) 您所在的位置:网站首页 numpy重复数组的两种方式 numpy/pytorch 高级索引(花式索引(index索引&数组索引&tuple索引) & 布尔索引)

numpy/pytorch 高级索引(花式索引(index索引&数组索引&tuple索引) & 布尔索引)

2023-08-06 07:16| 来源: 网络整理| 查看: 265

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

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

花式索引(整数数组索引 / index索引 / tuple索引)

      花式索引(Fancy indexing)是指利用整数数组进行索引,这里的整数数组可以是numpy数组也可以是Python中列表、元组等可迭代类型。

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

例1:

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

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

例2

取出x[[(0,0),(0,2)],[3,0, 3,2]]的元素,这样的话会组成一个shape是[2,2]的数组

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

索引的“广播”

结果的size是和索引的size相match的,而不是供索引的值的size

布尔索引

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

像这里就是idx1的shape为[3]的,就是对应着x的第一维,这样就是x[0]拿掉,x[1],x[2]保留,所以x[idx1]的shape就变成(2,2,4)了 

idx1的shape也必须为3,不然会报错

如果idx是两维的,它就必须和x的前两维对上,即必须是(3,2)的

x[idx2]的第一个4是idx2中True的个数,第二个4是第三维的个数,因为idx2只有前两维,所以第三维没动

如果idx是三维的,它就必须和x的shape全对上,即必须是(3,2,4)的

x[idx3]的shape只有1维了,即idx3中True的个数是14个

 

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

取出大于5的元素

 过滤掉为nan的值

 

 过滤掉复数元素

通过布尔值取某几行



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有