如何快速学习:[1]Swift编程语言,Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Ojective-C*共同运行于MacOS和iOS平台,用于搭建基于苹果平台的应用程......
2023-03-17 276 编程语言
推荐大家收藏本经验,以后再遇到关于Numpy的“花式”索引或切片直接来查就好啦!
Numpy的一维数组的索引基本方法和python中列表的索引操作基本相同。
(对基本的列表索引还不太熟悉的话,推荐看下相关经验哦~)
0Python中列表的索引与切片方式有哪些?
除了列表的那些索引方法,Numpy提供了索引数组索引的方式,可以通过索引数组获取多个不连续的值。
我们可以这么来理解:
1. 我们提供了一维的索引数组长度为 N。
2.1 Numpy负责遍历这个数组,每次取出一个索引。
2.2 Numpy创造出和索引数组一样维度大小的空数组。
3. Numpy使用这个索引去找到数据数组中对应的值。
4. 将获取的值放到对应位置的空数组中。
5. 返回填充好的空数组。
此外根据上面的理解方式,我们就能知道索引数组不一定是一维的。
索引数组的用处就是提供一系列索引值,表示单个下标;并且提供返回数组的形状。
所以也能提供二维索引数组来进行一维数组的索引, 不同之处在于返回结果维度和形状大小的不同。
二维数组需要两个下标(x, y)来定位元素,但是我只传入x这一个维度呢?
这样Numpy就会返回对应的一行,也就是选择所有列。
那么和一维数组的区别在于,一维数组的单个索引获取的是一个值,而二维数组的单个索引获取的是一行值(向量),然后填充到空数组中。
同样的我们也能传入二维索引数组,唯一的不同就是返回值的维度和形状不同。
这次我们针对二维数组要传入(x, y)啦,其实也好理解,原理都是一样的!
如果x和y维度相同,那么我们就每次各从x和y中取出一个,然后找到值返回。
如果x和y的维度不同呢,先迭代x,取出来后再次比较维度,如果维度一致即可查找返回,如果不一致,继续迭代。
在二维数组的索引过程中,如果我们选择了多行,但是列都想取2,传入一个全为2的索引数组是不是很费劲呢?
这时候广播机制就能很好的帮上我们的忙啦!
0什么是python(numpy)的广播?
利用广播的思想,我们此时只需要传入标量2,剩下的就交给Numpy就好了,实验证明,Numpy不仅成功的做到了而且速度还更快!
所以当x和y维度一致,但是形状大小不一致,可以使用广播,使得大小匹配。
测试一下如果想要匹配所有行的第1列如何打印呢?在这里我们使用了符号“:”。
如果想要匹配所有行的第1列和第3列如何做呢?
如果想要匹配所有奇数行的第1列和第3列如何做呢(第一行索引是0)?
布尔索引通常被用于赋值。
我们在传入索引时,传入的是和数据数组形状大小一致的bool数组,通过这个布尔数组定位到数据位置,然后进行值的更新。
获取布尔数组的方法Numpy也帮我们实现啦!
多个条件其实就是对多个布尔数组的交集或并集操作。
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章
如何快速学习:[1]Swift编程语言,Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Ojective-C*共同运行于MacOS和iOS平台,用于搭建基于苹果平台的应用程......
2023-03-17 276 编程语言
web图表开发工具FineReport:[11]连续分组,数据库表数据是按照时间先后录入的,查询的时候希望按照时间先后,某个字段连续相同的话就合并起来显示,这样的报表可以通过相邻连续分组来实现。......
2023-03-17 502 编程语言