• Python机器学习(四十)NumPy 数组切片


    要访问或修改ndarray数组中的元素,可以使用数组切片/索引。

    如前所述,ndarray数组索引从0开始。

    使用切片访问数组,首先通过内置slice函数创建一个切片对象,该对象存储了创建时传入的startstopstep参数,把这个切片对象传给数组,我们就可以提取数组的一部分(切片)返回。

    一维数组

    示例

    import numpy as np 
    a = np.arange(10) 
    s = slice(2,7,2) 
    print(a[s])
    [2  4  6]

    上面的例子中,首先使用arange()函数创建ndarray数组,然后定义一个切片对象,它的startstopstep值分别是2、7和2。当把这个切片对象传递给ndarray数组时,会从数组中提取一部分返回,返回部分的索引从2到7,步长2。

    可以直接向ndarray数组传入start:stop:step格式的切片参数,效果相同。

    示例

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

    输出

    [2  4  6]
    • [i] 如果只放一个参数,则返回与索引对应的单个项。
    • [:i] 如果在前面插入:,则从该索引之前的所有项都将被提取。
    • [start:stop] 如果使用了两个参数,中间用:分隔,则使用默认步骤1,提取两个索引(不包括stop)之间的项。

    示例

    单项切片

    import numpy as np 
    a = np.arange(10) 
    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) 
    print(a[:2])

    输出

    [0 1]

    示例

    在索引之间切片

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

    输出

    [2  3  4] 

    上述规则也适用于多维数组。

    多维数组

    示例

    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]]

    切片还可以包括省略号(…),表示在该维度上选择全部。

    示例

    # 演示数组
    import numpy as np 
    a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 
    
    print ('数组:') 
    print (a) 
    print ('
    ')  
    
    # 返回一个数组,由第二列中的项目组成
    print ('第二列中的项目是:')  
    print (a[...,1]) 
    print ('
    ')  
    
    # 返回第二行
    print ('第二行中的项目是:') 
    print (a[1,...]) 
    print ('
    ')  
    
    # 返回第一列之后的项目
    print ('第一列之后的项目:') 
    print (a[...,1:])

    输出

    数组:
    [[1 2 3]
     [3 4 5]
     [4 5 6]] 
    
    第二列中的项目是:
    [2 4 5] 
    
    第二行中的项目是:
    [3 4 5]
    
    第一列之后的项目:
    [[2 3]
     [4 5]
     [5 6]] 
  • 相关阅读:
    简单封装万维易源(showapi)ip归属地查询接口
    修改七牛上传域名
    深度探索C++对象模型 个人总结 第四章 Function语意学
    深度探索C++对象模型 个人总结 第三章 Data语意学
    深度探索C++对象模型 个人总结 第二章 构造函数语意学
    深度探索C++对象模型 个人总结 第一章 关于对象
    《More Effective C++》 个人总结
    《Effective C++》个人总结
    C++ Primer第5版 第十九章课后练习答案
    C++ Primer第5版 第十八章课后练习答案
  • 原文地址:https://www.cnblogs.com/huanghanyu/p/13161655.html
Copyright © 2020-2023  润新知