精华内容
下载资源
问答
  • numpy数组切片

    千次阅读 2019-05-22 19:18:59
    1.一维数组切片 切片:左闭右开,形式 d[x,y,z] x 起始位置,包括进去 y 终止位置,不包括进去 z 步长,如果等于2,就空开一个取一个数据 负号代表从后往前取。 案例: print(d[1:3]) print(d[1:-2]) print(d[-4:3]...

    1.一维数组切片
    切片:左闭右开,形式 d[x,y,z]
    x 起始位置,包括进去
    y 终止位置,不包括进去
    z 步长,如果等于2,就空开一个取一个数据
    负号代表从后往前取。
    案例:
    在这里插入图片描述

    print(d[1:3])
    print(d[1:-2])
    print(d[-4:3])
    print(d[::2])
    

    结果:
    在这里插入图片描述
    2.多维数组切片
    在这里插入图片描述

    print('表示取第一行第3到第四个数',e[0,3:5])
    print('表示取第4行到最后一行,每一行的第四个到最后一个',e[4:,4:])
    print('表示取每一行的第3个数',e[:,2])
    print('从第2行开始,每2行选一行,选中行的每2个选一个数',e[2::2,::2])
    

    结果:
    在这里插入图片描述

    展开全文
  • Python中numpy数组切片

    千次阅读 2020-12-17 03:09:38
    Python中符合切片并且常用的有:列表,字符串,元组。 下面那列表来说明,其他的也是一样的。 格式:[开头:结束:步长] 开头:当步长>0时,不写默认0。当步长<0时,不写默认-1 结束:当步长>0时,不写默认...

    参考Python中numpy数组切片 - 云+社区 - 腾讯云

    1、基本概念

    Python中符合切片并且常用的有:列表,字符串,元组。
    下面那列表来说明,其他的也是一样的。
    格式:[开头:结束:步长]
    开头:当步长>0时,不写默认0。当步长<0时,不写默认-1
    结束:当步长>0时,不写默认列表长度加一。当步长<0时,不写默认负的列表长度减一
    步长:默认1,>0 是从左往右走,<0是从右往左走
    遵循左闭右开原则,如:[0:9]等价于数学中的[0,9)
    在这里插入图片描述

    # 字符串中用法
    str = 'python'
    print(str[::])  # python
    print(str[::1]) # python
    print(str[::2]) # pto 从左往右数,数2步,取一个值
    print(str[::-1]) # nohtyp 从右往左数,数1步,取一个值,即:取全部值
    print(str[::-2]) # nhy 从右往左数,数2步,取一个值
    
    # 列表中用法
    list = [1, 2, 3, 4 , 5, 6]
    print(list[::]) # [1, 2, 3, 4, 5, 6]
    print(list[::1]) # [1, 2, 3, 4, 5, 6]
    print(list[::2]) # [1, 3, 5]
    print(list[::-1]) # [6, 5, 4, 3, 2, 1]
    print(list[::-2]) # [6, 4, 2]
    
    # [n::-1] 示例
    # 先找下标值n,再翻转(从右到左)取值
    str = 'python'
    list = [1, 2, 3, 4 , 5, 6]
    print(str[1::-1]) # yp 先找到下标1的值:y,从右往左取值:yp
    print(str[2::-1]) # typ 先找到下标2的值:t,从右往左取值:typ
    print(list[1::-1]) # [2, 1] 先找到下标1的值:2,从右往左取值:[2, 1]
    print(list[2::-1]) # [3, 2, 1] 先找到下标2的值:3,从右往左取值:[3, 2, 1]
    

    2、一维数组

    通过冒号分隔切片参数 start:stop:step 来进行切片操作:
    

    1、一个参数:a[i]

    	如 [2],将返回与该索引相对应的单个元素。
    

    2、两个参数:b=a[i:j]

    	b = a[i:j] 表示复制a[i]到a[j-1],以生成新的list对象
    	i缺省时默认为0,即 a[:n] 代表列表中的第一项到第n项,相当于 a[0:n]
    	j缺省时默认为len(alist),即a[m:] 代表列表中的第m+1项到最后一项,相当于a[m:5]
    	当i,j都缺省时,a[:]就相当于完整复制a
    

    在这里插入图片描述3、三个参数:格式b = a[i:j:s]

    这里的s表示步进,缺省为1.(-1时即翻转读取)
    所以a[i:j:1]相当于a[i:j]
    当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
    所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍。所以你看到一个倒序的东东。
    

    在这里插入图片描述

    3、二维数组(逗号,)

    X[n0,n1,n2]表示取三维数组,取N维数组则有N个参数,N-1个逗号分隔。

    取元素 X[n0,n1]

    这是最基本的情况,表示取 第0维 的第 n0 个元素,继续取 第1维 的第 n1个元素。如 X[2,2] 表示第0维第2个元素[20,21,22,23],然后取其第1维的第2个元素即 22;

    切片 X[s0:e0,s1:e1]

    这是最通用的切片操作,表示取 第0维 的第 s0 到 e0 个元素,继续取 第1维 的第 s1 到 e1 个元素(左闭右开)。如 X[1:3,1:3] 表示第0维第(1:3)个元素[[10,11,12,13],[20,21,22,23]],然后取其第1维的第(1:3)个元素即 [[11,12],[21,22]];

    切片特殊情况 X[:e0,s1:]

    特殊情况,即左边从0开始可以省略X[:e0,s1:e1],右边到结尾可以省略X[s0:,s1:e1],取某一维全部元素X[:,s1:e1],事实上和Python 的 序列切片规则是一样的。

    常见的 X[:,0] 则表示 第0维取全部,第1维取0号元素;
    在这里插入图片描述在这里插入图片描述

    numpy的切片操作,一般结构如num[a:b,c:d],分析时以逗号为分隔符,
    逗号之前为要取的num行的下标范围(a到b-1),逗号之后为要取的num列的下标范围(c到d-1);
    前面是行索引,后面是列索引。
    如果是这种num[:b,c:d],a的值未指定,那么a为最小值0;
    如果是这种num[a:,c:d],b的值未指定,那么b为最大值;c、d的情况同理可得。
    

    展开全文
  • 注:最近在看代码,有好多关于numpy库的函数,尤其对于numpy数组,什么[:,2]、[-1:,0:2]...numpy数组切片操作 通过冒号分隔切片参数 start:stop:step 来进行切片操作: 形如: b = a[2:7:2] # 从索引 2 开始到索引 7...

    注:最近在看代码,有好多关于numpy库的函数,尤其对于numpy数组,什么[:,2]、[-1:,0:2]、[1:,-1:]搞得一脸懵逼,百度没找到解释得很到位的,官网教程也也真是够简洁的。所以,还是得自己去实打实的敲一下,加强理解。

    numpy数组切片操作

    通过冒号分隔切片参数 start:stop:step 来进行切片操作:
    形如:

    b = a[2:7:2]   # 从索引 2 开始到索引 7 停止,间隔为 2
    

    冒号 : 的解释:如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。

    一维数组

    一维数组就如上所说,直接给例子看

    >>>import numpy as np
    >>>a = np.array([1,2,3,4,5,6,7,8])
    

    1.只有一个参数

    >>> a[1] #具体的元素 2
    2
    >>> a[1:] #冒号前面是起,后面是止,冒号前面空,指最小0,后面放空就是到最后,这里是一维数组
    array([2, 3, 4, 5, 6, 7, 8])
    

    对比一下下面这两个,一个是一维数组,一个是具体的单个元素,为什么呢?看后面解释。

    >>> a[7:]
    array([8])
    >>> a[7]
    8
    

    2.两个参数

    >>> print(a[1:3])  #从索引1开始,也就是第二个元素2,到索引3,不包括索引3
    [2 3]
    

    3.三个参数

    >>> print(a[1:7:2]) #从索引1开始,到索引7,不包括索引7,间隔为2
    [2 4 6]
    

    一维数组,很好理解,毕竟中括号[]里只有冒号,没有逗号

    二维数组

    先定义一个二维数组

    >>> import numpy as np
    >>> a = np.array([[1,2,3],[3,4,5],[4,5,6]])
    >>>print(a)
    [[1 2 3]
     [3 4 5]
     [4 5 6]]
    
    简单:
    >>> a[1]
    array([3, 4, 5])
    

    单个参数的话,就是指的是1,第二行或第二列。这里是行,因为行优先我猜。
    所以就是第2行的元素

    >>> a[1:]
    array([[3, 4, 5],
          [4, 5, 6]])
    

    出现了冒号,意思是从第二号到最后,这里指的也是行。冒号后面没有数就是指最大的。冒号前面没有数,就是指最小数0。如下

    >>> a[:2]
    array([[1, 2, 3],
          [3, 4, 5]])
    

    这里的意思就是,从0开始,到2,也就是第1行第二行。(第三行不算)

    >>> a[1:2]
    array([[3, 4, 5]])
    

    现在是两个参数了,不过只有一个冒号,跟一维数组一样,是从第二行到第三行,不包括第三行。

    进阶
    >>> a[1,]
    array([3, 4, 5])
    >>> a[1:,]
    array([[3, 4, 5],
          [4, 5, 6]])
    >>> a[:2,]
    array([[1, 2, 3],
          [3, 4, 5]])
    >>> a[1:2,]
    array([[3, 4, 5]])
    

    跟上面三个对比一下,发现输出一模一样。

    总结:

    这是numpy的切片操作,一般结构如num[a:b,c:d],分析时以逗号为分隔符
    逗号之前为要取的num行的下标范围(a到b-1),逗号之后为要取的num列的下标范围(c到d-1);
    前面是行索引,后面是列索引
    如果是这种num[:b,c:d],a的值未指定,那么a为最小值0;
    如果是这种num[a:,c:d],b的值未指定,那么b为最大值;c、d的情况同理可得。

    所以重点就是看逗号,没逗号,就是看行了,冒号呢,就看成一维数组的形式啦。那上面逗号后面没有树,也就是不对列操作咯。
    当然也可以这样:

    >>> a[:2:1]
    array([[1, 2, 3],
        [3, 4, 5]])
    

    首先没有逗号,那切片就是只看行了,这里的意思是,从0开始到2(2不算),间隔为1。

    进阶up

    首先先把原数组再看一下。

    >>> import numpy as np
    >>> a = np.array([[1,2,3],[3,4,5],[4,5,6]])
    >>>print(a)
    [[1 2 3]
    [3 4 5]
    [4 5 6]]
    
    >>> a[:,1]
    array([2, 4, 5])
    

    逗号前面是行,行都没有指定数,也就是说对行每要求,只考虑列了。
    这里的意思是:逗号之后是列,只有一个元素1,就是取第2列了。

    >>> a[:,1:3]  #第2列到第3列
    array([[2, 3],
          [4, 5],
          [5, 6]])
    >>> a[:,0:2] #第1列到第2列
    array([[1, 2],
          [3, 4],
          [4, 5]])
    >>> a[:,]  #对列也不操作,跟下面等价
    array([[1, 2, 3],
          [3, 4, 5],
          [4, 5, 6]])
    >>> a[:,:]
    array([[1, 2, 3],
          [3, 4, 5],
          [4, 5, 6]])
    

    但是,下面的写法是错的!!!就是逗号在最前面都是错的

    >>> a[,1]
     File "<stdin>", line 1
       a[,1]
         ^
    SyntaxError: invalid syntax
    >>> a[,]
     File "<stdin>", line 1
       a[,]
         ^
    SyntaxError: invalid syntax
    >>> a[,:1]
     File "<stdin>", line 1
       a[,1]
         ^
    SyntaxError: invalid syntax
    

    到这,应该能基本看得懂所有的切片操作了吧!!!
    但是,我们可能还会遇到负号,比如-1、-2…等这些。这些怎么理解呢
    看下图
    在这里插入图片描述
    也就是说,-1就是指最后一个(行/列),依次递推。

    实战一波
    >>> a[:,-1]  #就是最后一列啦
    array([3, 5, 6])
    >>> a[:,-3:]  #倒3列,也就是这个数组的第一列,一直到最后。
    array([[1, 2, 3],
          [3, 4, 5],
          [4, 5, 6]])
    >>> a[:,-3:-1]  #倒3列,到倒1列,不包括倒一列。
    array([[1, 2],
          [3, 4],
          [4, 5]])
    

    其他行和列就都差不多啦

    ok,现在看看稍微难理解的。

    进阶upup

    对比一下下面两个,发现他们的维度不同,一个是一维的,一个是二维的。
    我们上面也遇到一个,一个是一维,一个是具体的单个元素。

    >>> a[:,-1]
    array([3, 5, 6])
    
    >>> a[:,-1:]
    array([[3],
          [5],
          [6]])
    

    我的理解:

    第一个是,指定了最后一列,也就是说,在二维数组里的一列,就是一维的啊。那么第二个,是从最后一列开始,不妨假设一下后面还有列,那么就应该是不止一列,对机器来说,就是二维的。机器肯定不知道什么时候是一维,什么时候是二维的,所以当你用到start和stop的时候,那就当作是二维的了。

    我的建议:

    官网给出的教程实在是太简洁了。不够详细,所以啊,还是要自己动动手,就能很快明白numpy数组的切片操作了。

    注;以上就是博主能想到的所以切片操作了吧,关于我的理解,如果有误的话,还请大佬指出,共同学习呀。


    更新2021.10.13

    有大半年没有更新博客了,这段时间一直准备春招,实习,秋招,到今天基本上可以结束坐等开奖了;
    目前手里有近10个CV算法工程师意向书:字节,商汤,百度,顺丰,华为,小红书,拼多多,小马智行,海康威视,腾讯等
    接下来会花很多时间在小红书上整理这一过程所有的经验以及技巧,包括:丰富简历内容,如何打比赛(大佬止步),如何刷题,刷什么题,刷到什么程度,面试技巧,面经整理,hr面技巧,如何反问面试官,如何argue薪资等等等,大家有需要可以关注一波哈,内容保证丰富!助力大家秋招收割offer到手软!

    大家如果是刚研一或者已经研二或者是大二或者大三赶紧关注一波,关注我秋招不踩坑!

    小红书号:371845174(Activewaste,博客同名)

    后面也会在小红书分享好用工具,插件,装逼神器等,手把手教学,大家关注起来哈!
    我看有粉丝评论私信求更新的,大受鼓舞哈哈哈哈,后面会继续更新论文笔记,供大家参考互相学习!!!
    另外我比较少上csdn,大家给我私信要联系方式或者评论问问题有时没看到(一个月没上,200+的通知),大家直接去小红书私信提问,或者催我撒!

    在这里插入图片描述

    展开全文
  • numpy数组切片操作 通过冒号分隔切片参数 start:stop:step 来进行切片操作: 冒号 : 的解释:如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。...

    numpy数组切片介绍及使用

    一、通过pip安装numpy

    1.在cmd输入:pip install numpy
    2.测试一下python -c “import numpy”,没有报错就正常了

    二、numpy简单介绍

    NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
    ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。
    通过冒号分隔切片参数 start:stop:step 来进行切片操作:

    
    冒号 : 的解释:
    (1)如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。
    (2)如果使用了两个参数,如 [2:],表示从该索引开始以后的所有项都将被提取。
    (3)如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。
    (4)如果使用了三个参数,如[2:7:2],那么提取两个索引(不包含停止索引)之间的项,且间隔为2 的取值。
    (5)如果参数是负数,如[:-1],那么提取值为除了最后一个全部取。
    注意:索引是从0开始计算的。
    
    
    • 一维数组

    如:从数组中获取索引2到索引7的间隔为2的数值

    # coding:utf-8
    import  numpy as np
    a=np.arange(10)       #[0,1,2,3,4,5,6,7,8,9,10]  
    b=a[2:7:2]          #从索引 2 开始到索引 7 停止,间隔为 2
    print(b)                       #输出结果:[2 4 6]
    
    • 多维数组
      同样适用上述索引提取方法
    
    import numpy as np
    a = np.array([[1,2,3],[3,4,5],[4,5,6]])
    # 从索引1处开始切割
    print(a[1:])#输出结果:[[3 4 5] [4 5 6]]
    
    

    切片还可以包括省略号 …,来使选择元组的长度与数组的维度相同。 如果在行位置使用省略号,它将返回包含行中元素的 ndarray。注意:冒号分隔切片不包含停止索引。

    
    import numpy as np
    a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
    #A[行,列],行索引和列索引以逗号分隔开
    print (a[...,1])   # 第2列元素   输出结果:[2 4 5]
    print (a[1,...])   # 第2行元素  输出结果:[3,4,5]
    print (a[...,1:])  # 第2列及剩下的所有元素   输出结果:[[2 3] [4 5] [5 6]]
    
    

    三、NumPy 高级索引

    以下实例获取数组中(0,0),(1,1)和(2,0)位置处的元素。

    
    import numpy as np 
    x = np.array([[1,  2],  [3,  4],  [5,  6]]) 
    y = x[[0,1,2],  [0,1,0]]  #相当于(0,0)(1,1)(2,0)
    print (y)  #输出结果:[1,4,5]
    
    

    以下实例获取了 4X3 数组中的四个角的元素。 行索引是 [0,0] 和 [3,3],而列索引是 [0,2] 和 [0,2]。

    import numpy as np
    x = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
    rows = np.array([[0, 0], [3, 3]])  #列索引
    cols = np.array([[0, 2], [0, 2]])  #行索引
    y = x[rows, cols]  #相当于(0,0)(0,2)(3,0)(3,2)
    print (y)    #输出结果:[[ 0  2] [ 9 11]]
    
    
    展开全文
  • 一、numpy切片操作,一般结构如num[a:b,c:d],以逗号为分隔符,逗号之前为要取的num矩阵行的下标范围(a到b-1),逗号之后为要取的num矩阵列的下标范围(c到d-1);如果是这种num[:b,c:d],a的值未指定,默认a从0开始...
  • python numpy--数数组组的的组组合合和和分分割割实实例例 这篇文章主要介绍了python numpy--数组的组合和分割实例具有很好的参考价值希望对大家有所帮助一 跟随小编过来看看吧 数数组的的组合合主主要要有有 1....
  • 关于Numpy数组切片操作的整理与思考

    千次阅读 2018-07-29 17:34:43
    1.Python3中切片的定义 切片的语法表达式为:[start_index : end_index : step],其中: start_index表示起始索引 end_index表示结束索引 step表示步长,步长不能为0,且默认值为1 切片操作是指按照步长,截取...
  • numpy数组切片操作

    千次阅读 2017-12-19 22:00:51
    numpy 数组切片操作 关于-1的解析再来看个多维数组的情况A=np.array(range(24)) A=np.reshape(A,[4,3,2])输出:A array([[[ 0, 1], [ 2, 3], [ 4, 5]], [[ 6, 7], [ 8, 9], [10, 11]], [[1
  • NumPy 数组切片

    2019-09-29 00:57:11
    章节Numpy 介绍 Numpy 安装 NumPy ndarray ...NumPy 数组切片 NumPy 广播 NumPy 数组迭代 NumPy 位运算 NumPy 字符串函数 NumPy 数学函数 NumPy 统计函数 NumPy 排序、查找、计数 NumPy 副本和视图 Nu...
  • numpy数组切片传入索引与删除指定索引的行列 最近准备数据集,需要用到两个numpy的技巧,记录一下: 数组中切片传入索引 a = np.arange(20).reshape((4,5)) print(a) b = a[[1,2,3,0],[2,3,2,0]] print(b) [[ 0 1 2...
  • Numpy 数组切片

    2018-08-06 20:15:55
    Numpy 数组切片
  • 1. 本文介绍今天为大家介绍以下内容:Ⅰ Python原生切片,与numpy数组切片,有哪些不同?Ⅱ numpy中,应该如何使用切片?2. Python原生切片,与numpy数组切片,有哪...
  • Numpy数组操作

    2020-12-21 00:05:31
    目录Numpy数组的操作概述Numpy数组的创建numpy.array方法numpy.zeros方法numpy.ones方法numpy.full方法numpy.arange方法numpy.linspace方法...的字节大小nbytesNumpy数组的索引一维数组多维数组Numpy数组切片
  • 直接进行索引,切片 对象[:, :] -- 先行后列 二维数组索引方式: import numpy as np stock_change=np.random.normal(0,1,[3,8]) #生成均值为0,标准差为1的正态分布数据,三行八列 #np.random.normal(loc=0.0,...
  • numpy数组切片和索引 基本切片的语法是array[i: j: k],其中i是起始索引,j是停止索引,k是步长(k≠0) 示例: import numpy as np x = np.array([0, 1, 2, 3, 4, 5, 6, 7]) print(x[1:6:2]) [1 3 5] 假设n...
  • import numpy as np b=np.arange(24) a=b.reshape(2,3,4) print a print a[0,:,0] 2、取所有二维数组下的每个二维数组的第0个元素(一维数组) b=np.arange(24) a=b.reshape(2,3,4) print a print '---------------...
  • 参考链接: Structural indexing tools 参考链接: np.clip() 函数 和 numpy切片省略号的用法 参考链接: NumPy 切片和索引
  • Python中numpy 数组切片操作

    万次阅读 2018-10-17 13:45:48
    Python中numpy 数组切片操作简介取元素 X[n0,n1]切片 X[s0:e0,s1:e1]切片特殊情况 X[:e0,s1:]示例代码输出结果 简介 X[n0,n1]是通过 numpy 库引用二维数组或矩阵中的某一段数据集的一种写法。 X[n0,n1,n2]表示...
  • 一维数组切片和索引与列表list是一样的,这里着重介绍二维数组。 1、递归方式 1.1 递归索引 import numpy as np arr = np.random.randint(0,10,(3,5)) print(arr) print(arr[0][0]) [[4 3 ...
  • Python中Numpy数组切片(提取数组中间的一部分) 遇到问题:我有一个二维数组,想把每一维都去掉首尾数据取中间的数据,这时候遇到了麻烦就是数组的形态不对,最后的解决办法如下 a1=np.array([[11,12,13,14,15],...
  • 文章目录数组索引普通索引一维数组索引二维数组索引三维数组索引布尔索引花式索引数组切片一维数组切片二维数组切片三维数组切片数组元素重新赋值,语法,先筛选,再赋值矢量计算广播 数组索引 普通索引 一维数组索引...
  • Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32 ...>>> import numpy as np >>> a = np.zeros((3,5)) >>> a array
  • 一、一维数组索引与切片 1.数组的索引是从0开始的; 2.数组脚标由右向左是从-1开始的,每向左一位数字减1 3.切片是[m,n)(即左闭右开)的区间; 4.将标量复制给切片,会广播到切片的整个区域。 二、二维数组 1....
  • 在使用NumPy数组时,有一个要注意的地方:在取数组的切片时,取出来的切片(Slices)仅仅是原始数组的视图(Views),而非它的复制!这与Python的built-in的list不同。 arr = np.arange(10) arr 输出:array([0, 1,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,127
精华内容 7,250
关键字:

numpy数组切片