发布于2020-04-02 14:24 阅读(2367) 评论(0) 点赞(22) 收藏(4)
NumPy是Python语言的一个扩展程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。在进行大量数据计算中,NumPy会为我们提供很多的方便。最近我在学习CV方面的知识,却老是弄混冒号在切片的作用,就写一篇文章来加深一下印象。
在一维数组中我们常见的表示方法有s[i:j] ,s[i:j:k],s[::-1]等等,下面我会依次实验一下各种符号的作用。
- import numpy as np
- # 生成一个0到9的np数组(注意跟数组一样,下标是从零开始)
- a = np.arange(10)
- # 打印数组
- print("a={}".format(a))
- # 取下标为1的元素到下标为8的元素(左闭右开)
- b=a[1:8]
- print("b={}".format(b))
- # 开头省略意味着从起始位置开始取-1代表倒数第一个元素位置(左闭右开)
- c=a[:-1]
- print("c={}".format(c))
- # 开头省略意味着从起始位置开始取-2代表倒数第二个元素位置(左闭右开)
- d=a[:-2]
- print("d={}".format(d))
- # 从倒数第二个元素开始直到最后一个元素为止
- e=a[-2:]
- print("e={}".format(e))
- # a[i:j:k]表示从i开始步长为k取到j元素为止
- f= a[1:8:2]
- print("f={}".format(f))
- # s[::-1]是从最后一个元素到第一个元素反向复制一遍
- g=a[::-1]
- print("g={}".format(g))
输出:
在一维数组中还是比较简单的,“:代表取全部元素”
二维数组的情况稍微复杂,因为维度增加了所以引入“,”来作为不同维度的分隔符
- import numpy as np
-
- a = np.array([[1,2,3],[3,4,5],[4,5,6]])
- # 打印数组
- print("a={}".format(a))
-
- # 第一维全取(即行),第二位只取下标为1的那列
- b=a[:,1]
- print("b={}".format(b))
-
- # 第一维全取(即行),第二位从下标为1的那列起直到结尾
- c=a[:,1:]
- print("c={}".format(c))
-
- # 第二维全取(即列),第一维只取下标为1的那列
- d=a[1,:]
- print("d={}".format(d))
-
- # 第一维取下标为一开始,第二维取到下标为1为止
- e=a[1:,:1]
- print("e={}".format(e))
-
- # 此处省略号可以理解为取全部元素,需要具体分析
- f= a[1,...]
- print("f={}".format(f))
输出:
三维数组乃至多维数组是比较难理解的,需要多进行操作思考
- import numpy as np
-
- a = np.array([[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]],
- [[13, 14, 15, 16], [17, 18, 19, 20], [21, 22, 23, 24]],
- [[25, 26, 27, 28], [29, 30, 31, 32], [33, 34, 35, 36]],
- ])
- # 打印数组
- print("a={}".format(a))
- b=a[1,2,1]
- print("b={}".format(b))
-
- c=a[::,1]
- print("c={}".format(c))
-
- d=a[1,:1,2:]
- print("d={}".format(d))
输出:
在这里推荐一位大佬写的文章,十分详细,我只是挑了其中的一小部分,想要更加深入了解的同学移步:Python二维数组与三维数组切片详解
原文链接:https://blog.csdn.net/qq_40608137/article/details/105240099
作者:imsorry
链接:https://www.pythonheidong.com/blog/article/299303/2ebc9f77f7bb867ded1f/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!