首页 > 软件开发 > 编程语言 >

Numpy的索引和切片技巧有哪些

来源:互联网 2023-03-17 00:27:59 337

推荐大家收藏本经验,以后再遇到关于Numpy的“花式”索引或切片直接来查就好啦!

3lv办公区 - 实用经验教程分享!

3lv办公区 - 实用经验教程分享!

Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

工具/原料

  • Python 3
  • Numpy

一维数组的索引

  • 1

    Numpy的一维数组的索引基本方法和python中列表的索引操作基本相同。3lv办公区 - 实用经验教程分享!

    (对基本的列表索引还不太熟悉的话,推荐看下相关经验哦~)

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    0Python中列表的索引与切片方式有哪些?3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 2

    除了列表的那些索引方法,Numpy提供了索引数组索引的方式,可以通过索引数组获取多个不连续的值。

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 3

    我们可以这么来理解:3lv办公区 - 实用经验教程分享!

    1. 我们提供了一维的索引数组长度为 N。3lv办公区 - 实用经验教程分享!

    2.1 Numpy负责遍历这个数组,每次取出一个索引。3lv办公区 - 实用经验教程分享!

    2.2 Numpy创造出和索引数组一样维度大小的空数组。

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    3. Numpy使用这个索引去找到数据数组中对应的值。3lv办公区 - 实用经验教程分享!

    4. 将获取的值放到对应位置的空数组中。3lv办公区 - 实用经验教程分享!

    5. 返回填充好的空数组。

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 4

    此外根据上面的理解方式,我们就能知道索引数组不一定是一维的。3lv办公区 - 实用经验教程分享!

    索引数组的用处就是提供一系列索引值,表示单个下标;并且提供返回数组的形状。3lv办公区 - 实用经验教程分享!

    所以也能提供二维索引数组来进行一维数组的索引, 不同之处在于返回结果维度和形状大小的不同。

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 4此文章非法爬取自百度经验
  • 二维数组的单维度索引

  • 1

    二维数组需要两个下标(x, y)来定位元素,但是我只传入x这一个维度呢?3lv办公区 - 实用经验教程分享!

    这样Numpy就会返回对应的一行,也就是选择所有列。

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 2

    那么和一维数组的区别在于,一维数组的单个索引获取的是一个值,而二维数组的单个索引获取的是一行值(向量),然后填充到空数组中。

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 3

    同样的我们也能传入二维索引数组,唯一的不同就是返回值的维度和形状不同。

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 二维数组的多维度索引

  • 1

    这次我们针对二维数组要传入(x, y)啦,其实也好理解,原理都是一样的!3lv办公区 - 实用经验教程分享!

    如果x和y维度相同,那么我们就每次各从x和y中取出一个,然后找到值返回。

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 2

    如果x和y的维度不同呢,先迭代x,取出来后再次比较维度,如果维度一致即可查找返回,如果不一致,继续迭代。

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 广播机制

  • 1

    在二维数组的索引过程中,如果我们选择了多行,但是列都想取2,传入一个全为2的索引数组是不是很费劲呢?3lv办公区 - 实用经验教程分享!

    这时候广播机制就能很好的帮上我们的忙啦!

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    0什么是python(numpy)的广播?3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 2

    利用广播的思想,我们此时只需要传入标量2,剩下的就交给Numpy就好了,实验证明,Numpy不仅成功的做到了而且速度还更快!

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 3

    所以当x和y维度一致,但是形状大小不一致,可以使用广播,使得大小匹配。

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 4

    测试一下如果想要匹配所有行的第1列如何打印呢?在这里我们使用了符号“:”。

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 5

    如果想要匹配所有行的第1列和第3列如何做呢?

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 6

    如果想要匹配所有奇数行的第1列和第3列如何做呢(第一行索引是0)?

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 布尔索引

  • 1

    布尔索引通常被用于赋值。

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    我们在传入索引时,传入的是和数据数组形状大小一致的bool数组,通过这个布尔数组定位到数据位置,然后进行值的更新。3lv办公区 - 实用经验教程分享!

    获取布尔数组的方法Numpy也帮我们实现啦!

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 2

    多个条件其实就是对多个布尔数组的交集或并集操作。

    3lv办公区 - 实用经验教程分享!

    3lv办公区 - 实用经验教程分享!

    Numpy的索引和切片技巧有哪些?3lv办公区 - 实用经验教程分享!

  • 注意事项

    • 如果在实践中有不一致的情况,可以评论或私信我指出,我一定会积极回复并更新经验的!
    • 如果觉得本经验能够帮助到您的话,不妨”点赞“支持一下吧~

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!3lv办公区 - 实用经验教程分享!


    标签: python编程语言

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码