numpy/pytorch 高级索引(花式索引(index索引&数组索引&tuple索引) & 布尔索引) | 您所在的位置:网站首页 › numpy重复数组的两种方式 › numpy/pytorch 高级索引(花式索引(index索引&数组索引&tuple索引) & 布尔索引) |
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 实验室设备网 版权所有 |