zoukankan      html  css  js  c++  java
  • Numpy | 08 切片和索引

    ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样

    (1)ndarray 数组索引可以基于 0 - n 的下标进行;

    (2)切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

    实例1:通过下标。注意下标是从0开始

    import numpy as np
    
    a = np.arange(10)
    print(a)
    print(a[0])
    print(a[2])

    输出结果为:

      [0 1 2 3 4 5 6 7 8 9]
      0
      2

     

    实列2:通过slice进行切片

    import numpy as np
    
    a = np.arange(10)
    
    s1 = slice(2, 7)
    print(a[s1])
    
    s2 = slice(2, 7, 2)  # 设置起始,终止和步长
    print(a[s2])

    输出结果为:

      [2 3 4 5 6]
      [2 4 6]

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

    冒号 : 的解释:

      如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。

      如果为 [2:],表示从该索引开始以后的所有项都将被提取。

      如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。

    import numpy as np
     
    a = np.arange(10)  
    b = a[2:7:2]   # 从索引 2 开始到索引 7 停止,间隔为 2
    print(b)

    输出结果为:

    [2  4  6]
    import numpy as np
     
    a = np.arange(10)  # [0 1 2 3 4 5 6 7 8 9]
    b = a[5] 
    print(b)

    输出结果为:

    5

    import numpy as np
     
    a = np.arange(10)
    print(a[2:])

    输出结果为:

    [2  3  4  5  6  7  8  9]

    import numpy as np
     
    a = np.arange(10)  # [0 1 2 3 4 5 6 7 8 9]
    print(a[2:5])

    输出结果为:

    [2  3  4]

    多维数组

    实例1: 在多维数组的切片中,使用逗号 , 区分维数。注意:冒号分隔切片不包含停止索引。

    import numpy as np
      
    a=np.arange(0,12)
    a.shape=(3,4)
    print(a)
    print(a[0:2,1:3])

    输出结果:

    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]
    [[1 2] [5 6]]

    a[0:2,1:3]

    可以把冒号左边的数看成是横坐标,右边的数看成是纵坐标,四个坐标做笛卡尔积,即取数组 a 下标是 (0,1),(0,2),(1,1),(1,2) 四个位置的数。

     

    实例2

    import numpy as np
     
    a = np.array([[1,2,3],[3,4,5],[4,5,6]])
    print(a)
    
    # 从某个索引处开始切割
    print('从数组索引 a[1:] 处开始切割')
    print(a[1:])

    输出结果为:

    [[1 2 3]
     [3 4 5]
     [4 5 6]]
    从数组索引 a[1:] 处开始切割 [[3 4 5] [4 5 6]]

    实例3: 切片还可以包括省略号 …,来使选择元组的长度与数组的维度相同。

        如果在行位置使用省略号,它将返回包含行中元素的 ndarray。

    import numpy as np
    
    a = np.array([[1, 2, 3], [3, 4, 5], [4, 5, 6]])
    print(a)
    print('
    ')
    
    print(a[..., 1])                                # 第2列元素
    print('
    ')
    
    print(a[1, ...])                                # 第2行元素
    print('
    ')
    
    print(a[..., 1:])                               # 第2列及剩下的所有元素
    print('
    ')

    输出结果为:

    [[1 2 3]
    [3 4 5]
    [4 5 6]]


    [2 4 5]


    [3 4 5]


    [[2 3]
    [4 5]
    [5 6]]




  • 相关阅读:
    20200305 VMware虚拟机安装及centOS
    20200303 pandas
    20200302 数据分析之numpy以及Jupyter
    Bash(Terminal)高频命令
    E117: Unkown function: vundle#installer#new
    字符串输入之%s
    结合getchar()理解缓冲区
    在HEXO主题中添加站内搜索
    字符串的全排列
    无法启动程序,系统找不到指定的文件
  • 原文地址:https://www.cnblogs.com/Summer-skr--blog/p/11689243.html
Copyright © 2011-2022 走看看