程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

一文看懂NumPy的切片中常用的冒号

发布于2020-04-02 14:24     阅读(2367)     评论(0)     点赞(22)     收藏(4)


  NumPy是Python语言的一个扩展程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。在进行大量数据计算中,NumPy会为我们提供很多的方便。最近我在学习CV方面的知识,却老是弄混冒号在切片的作用,就写一篇文章来加深一下印象。

一维数组

  在一维数组中我们常见的表示方法有s[i:j] ,s[i:j:k],s[::-1]等等,下面我会依次实验一下各种符号的作用。

  1. import numpy as np
  2. # 生成一个0到9的np数组(注意跟数组一样,下标是从零开始)
  3. a = np.arange(10)
  4. # 打印数组
  5. print("a={}".format(a))
  6. # 取下标为1的元素到下标为8的元素(左闭右开)
  7. b=a[1:8]
  8. print("b={}".format(b))
  9. # 开头省略意味着从起始位置开始取-1代表倒数第一个元素位置(左闭右开)
  10. c=a[:-1]
  11. print("c={}".format(c))
  12. # 开头省略意味着从起始位置开始取-2代表倒数第二个元素位置(左闭右开)
  13. d=a[:-2]
  14. print("d={}".format(d))
  15. # 从倒数第二个元素开始直到最后一个元素为止
  16. e=a[-2:]
  17. print("e={}".format(e))
  18. # a[i:j:k]表示从i开始步长为k取到j元素为止
  19. f= a[1:8:2]
  20. print("f={}".format(f))
  21. # s[::-1]是从最后一个元素到第一个元素反向复制一遍
  22. g=a[::-1]
  23. print("g={}".format(g))

 

输出:

在一维数组中还是比较简单的,“:代表取全部元素”

二维数组

  二维数组的情况稍微复杂,因为维度增加了所以引入“,”来作为不同维度的分隔符

  1. import numpy as np
  2. a = np.array([[1,2,3],[3,4,5],[4,5,6]])
  3. # 打印数组
  4. print("a={}".format(a))
  5. # 第一维全取(即行),第二位只取下标为1的那列
  6. b=a[:,1]
  7. print("b={}".format(b))
  8. # 第一维全取(即行),第二位从下标为1的那列起直到结尾
  9. c=a[:,1:]
  10. print("c={}".format(c))
  11. # 第二维全取(即列),第一维只取下标为1的那列
  12. d=a[1,:]
  13. print("d={}".format(d))
  14. # 第一维取下标为一开始,第二维取到下标为1为止
  15. e=a[1:,:1]
  16. print("e={}".format(e))
  17. # 此处省略号可以理解为取全部元素,需要具体分析
  18. f= a[1,...]
  19. print("f={}".format(f))

输出:

三维数组

  三维数组乃至多维数组是比较难理解的,需要多进行操作思考

  1. import numpy as np
  2. a = np.array([[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]],
  3. [[13, 14, 15, 16], [17, 18, 19, 20], [21, 22, 23, 24]],
  4. [[25, 26, 27, 28], [29, 30, 31, 32], [33, 34, 35, 36]],
  5. ])
  6. # 打印数组
  7. print("a={}".format(a))
  8. b=a[1,2,1]
  9. print("b={}".format(b))
  10. c=a[::,1]
  11. print("c={}".format(c))
  12. d=a[1,:1,2:]
  13. print("d={}".format(d))

输出:


在这里推荐一位大佬写的文章,十分详细,我只是挑了其中的一小部分,想要更加深入了解的同学移步:Python二维数组与三维数组切片详解

原文链接:https://blog.csdn.net/qq_40608137/article/details/105240099



所属网站分类: 技术文章 > 博客

作者:imsorry

链接:https://www.pythonheidong.com/blog/article/299303/2ebc9f77f7bb867ded1f/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

22 0
收藏该文
已收藏

评论内容:(最多支持255个字符)