zoukankan      html  css  js  c++  java
  • NumPy疑难问题---1、NumPy切片操作

    NumPy疑难问题---1、NumPy切片操作

    一、总结

    一句话总结:

    numpy切片结构:array[start:stop:step,start:stop:step],前面的start:stop:step表示行,后面的start:stop:step表示列,具体细节和python切片操作一样
    arr1=np.arange(1,17).reshape((4,4))
    print(arr1)
    [[ 1  2  3  4]
     [ 5  6  7  8]
     [ 9 10 11 12]
     [13 14 15 16]]
    
    print(arr1[1:3,1::2])
    [[ 6  8]
     [10 12]]

    1、NumPy切片操作和Python切片操作 的区别?

    Python切片操作是一组start:stop:step,NumPy切片操作有两组start:stop:step,前一组表示对行进行操作,后一组表示对列进行操作,具体使用细节都是一样的。

    Python切片操作一般是对一维的列表、元组、字符串等进行切片,所以是一组start:stop:step。

    NumPy切片操作 一般是对多维数组进行切片,所以有两组start:stop:step,前一组表示对行进行操作,后一组表示对列进行操作。

    具体使用细节都是一样的:索引和步长都是有正有负,效果都一样。

    二、NumPy切片操作

    博客对应课程的视频位置:1、NumPy切片操作-范仁义-读书编程笔记
    https://www.fanrenyi.com/video/44/378

    numpy切片结构:

    array[start:stop:step,start:stop:step]
    前面的start:stop:step表示行,后面的start:stop:step表示列
    
    numpy切片使用规则和python中的切片非常相似,start和stop索引有正有负,step也可正负
    
    表示行时,step为正表示从上往下,step为负表示从下往上,step的绝对值表示步长
    表示列时,step为正表示从左往右,step为负表示从右往左,step的绝对值表示步长

    我们以如下数组为例进行讲解

    NumPy切片操作和Python切片操作 的区别

    Python切片操作一般是对一维的列表、元组、字符串等进行切片,所以是一组start:stop:step。
    
    NumPy切片操作 一般是对多维数组进行切片,所以有两组start:stop:step,前一组表示对行进行操作,后一组表示对列进行操作。
    
    具体使用细节都是一样的:索引和步长都是有正有负,效果都一样。
    In [1]:
    import numpy as np
    
    In [2]:
    arr1=np.arange(1,17).reshape((4,4))
    print(arr1)
    
    [[ 1  2  3  4]
     [ 5  6  7  8]
     [ 9 10 11 12]
     [13 14 15 16]]
    

    1、切取单个值

    In [3]:
    print(arr1[1])
    
    [5 6 7 8]
    
    In [4]:
    print(arr1[-1])
    
    [13 14 15 16]
    
    In [5]:
    print(arr1[1,1])
    
    6
    
    In [6]:
    print(arr1[1,-2])
    
    7
    

    2、读取行

    In [7]:
    print(arr1[1:3])
    
    [[ 5  6  7  8]
     [ 9 10 11 12]]
    
    In [9]:
    print(arr1[1:3:-1])
    
    []
    
    In [10]:
    print(arr1[3:1:-1])
    
    [[13 14 15 16]
     [ 9 10 11 12]]
    
    In [11]:
    print(arr1[:1:-1])
    
    [[13 14 15 16]
     [ 9 10 11 12]]
    
    In [12]:
    print(arr1[:-3:-1])
    
    [[13 14 15 16]
     [ 9 10 11 12]]
    
    In [13]:
    print(arr1[1:])
    
    [[ 5  6  7  8]
     [ 9 10 11 12]
     [13 14 15 16]]
    
    In [14]:
    print(arr1[:3:2])
    
    [[ 1  2  3  4]
     [ 9 10 11 12]]
    
    In [15]:
    print(arr1[-3:-1])
    
    [[ 5  6  7  8]
     [ 9 10 11 12]]
    
    In [16]:
    print(arr1[-3:-1:-1])
    
    []
    
    In [17]:
    print(arr1[-3:3])
    
    [[ 5  6  7  8]
     [ 9 10 11 12]]
    

    3、读取行和列

    In [18]:
    arr1=np.arange(1,17).reshape((4,4))
    print(arr1)
    
    [[ 1  2  3  4]
     [ 5  6  7  8]
     [ 9 10 11 12]
     [13 14 15 16]]
    
    In [19]:
    print(arr1[1:3,1:3])
    
    [[ 6  7]
     [10 11]]
    
    In [20]:
    print(arr1[1:3,:1:-1])
    
    [[ 8  7]
     [12 11]]
    
    In [21]:
    print(arr1[1:3,-1::-1])
    
    [[ 8  7  6  5]
     [12 11 10  9]]
    
    In [22]:
    print(arr1[1:3,1:])
    
    [[ 6  7  8]
     [10 11 12]]
    
    In [23]:
    print(arr1[1:3,3::-2])
    
    [[ 8  6]
     [12 10]]
    
    In [24]:
    print(arr1[:,1::2])
    
    [[ 2  4]
     [ 6  8]
     [10 12]
     [14 16]]
    
    In [25]:
    print(arr1[:,:])
    
    [[ 1  2  3  4]
     [ 5  6  7  8]
     [ 9 10 11 12]
     [13 14 15 16]]
    
    In [27]:
    print(arr1[::,::])
    
    [[ 1  2  3  4]
     [ 5  6  7  8]
     [ 9 10 11 12]
     [13 14 15 16]]
    

    4、使用注意

    逗号前面的参数省略必须留一个冒号,表示有参数并且省略了,不然会报错

    In [26]:
    print(arr1[,:])
    
      File "<ipython-input-26-e911698203d0>", line 1
        print(arr1[,:])
                   ^
    SyntaxError: invalid syntax
    
    In [28]:
    print(arr1[,])
    
      File "<ipython-input-28-204ce1458cbd>", line 1
        print(arr1[,])
                   ^
    SyntaxError: invalid syntax
    
    In [ ]:
     
     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    bzoj 4606: [Apio2008]DNA【dp】
    UOJ #206. 【APIO2016】Gap【交互题】
    bzoj 4071: [Apio2015]巴邻旁之桥【splay】
    bzoj 4069: [Apio2015]巴厘岛的雕塑【dp】
    bzoj 4070: [Apio2015]雅加达的摩天楼【spfa】
    洛谷 P3625 [APIO2009]采油区域【枚举】
    bzoj 1178: [Apio2009]CONVENTION会议中心(少见做法掉落!)【贪心+二分】
    bzoj 1179: [Apio2009]Atm【tarjan+spfa】
    洛谷 P3621 [APIO2007]风铃【贪心】
    bzoj 4898: [Apio2017]商旅【Floyd+分数规划+二分】
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13882220.html
Copyright © 2011-2022 走看看