• 三、Numpy基础:数组元素查询、修改


    一、索引

    • 取值的顺序是从外围到最里面的元素位置,依次写入。

    1.1、单值索引

    import numpy as np
    a = np.arange(16).reshape(2,2,4)
    print("原数组:
    ",a)
    print("单值索引值:
    ",a[1][1][2])
    >>>
    原数组:
     [[[ 0  1  2  3]
      [ 4  5  6  7]]
    
     [[ 8  9 10 11]
      [12 13 14 15]]]
    单值索引值:
     14
    

    1.2、花式索引

    • 可以通过数组,数组中写明元素位置,来索引出多个需要的元素
    import numpy as np
    a=np.arange(25).reshape(5,5)#定义一个5*5的二维数组
    print("原数组:
    ",a)
    print("花式索引多值(外层取行值):
    ",a[[3, 3, 1, 4]])#注意这里一定传入的是数组格式
    print("花式索引多值(二次取值,先行后列):
    ",a[[0,2,2,4],[0,2,4,4]])#注意这里一定传入的是数组格式
    >>>
    原数组:
     [[ 0  1  2  3  4]
     [ 5  6  7  8  9]
     [10 11 12 13 14]
     [15 16 17 18 19]
     [20 21 22 23 24]]
    花式索引多值(外层取行值):
     [[15 16 17 18 19]
     [15 16 17 18 19]
     [ 5  6  7  8  9]
     [20 21 22 23 24]]
    花式索引多值(外层取行值):
     [ 0 12 14 24]
    

    1.3、布尔索引

    • 可以通过设置筛选条件生成布尔数组,在通过布尔数组反向索引出符合条件的结果
    import numpy as np
    a=np.random.random((4,4))#生成4×4的二维数组
    b=a>0.5#生成以a>0.5为筛选条件的布尔数组
    print(b)
    print(a[b])#根据布尔数组将原值取出,变成一维数组
    >>>
    [[ True  True False False]
     [ True  True  True False]
     [ True  True  True  True]
     [ True False  True False]]
    [0.72159895 0.85017348 0.88332226 0.7494597  0.8514071  0.91133411 0.89253366 0.80979503 0.61827433 0.94660476 0.67418788]
    

     1.4、索引器ix_()

    • 与花式索引相比,ix_()可以以轴为单位进行遍历,而非花式索引中的单点遍历
    import numpy as np
    a=np.arange(24).reshape(4,6)#生成4×4的二维数组
    b=a[[1,3],[3,5]]#花式索引
    c=a[np.ix_([1,3],[3,5])]#索引器
    d=a[[1,3]][:,[3,5]]
    print("原数组:
    ",a)
    print("花式索引:
    ",b)
    print("索引器索引:
    ",c)
    print("c等值于d:
    ",d)
    >>>
    原数组:
     [[ 0  1  2  3  4  5]
     [ 6  7  8  9 10 11]
     [12 13 14 15 16 17]
     [18 19 20 21 22 23]]
    花式索引:
     [ 9 23]
    索引器索引:
     [[ 9 11]
     [21 23]]
    c等值于d:
     [[ 9 11]
     [21 23]]
    

      

    二、切片

    • numpy切片方式与python默认方式一致
    • 切片下来的内容与原数组共享同一片内存空间
    import numpy as np
    a = np.arange(16).reshape(2,2,4)
    print("原数组:
    ",a)
    print("取一个值:
    ",a[1][1][2])
    print("切片范围取值:
    ",a[1][1][2:4])
    print("更大范围的切片遍历::
    ",a[0][:][0:4])
    >>>
    原数组:
     [[[ 0  1  2  3]
      [ 4  5  6  7]]
    
     [[ 8  9 10 11]
      [12 13 14 15]]]
    取一个值:
     14
    切片范围取值: 
    [14 15]   更大范围的切片遍历:
    [[0 1 2 3] [4 5 6 7]]

     三、元素修改

    • 通过索引和切片得到的变量直接赋值即可修改 

     

  • 相关阅读:
    CSS3新子代选择器
    css3新选择
    procixx和最近调试的坑
    procixx地址
    从零开始之uboot、移植uboot2017.01(二、从入口分析流程)
    从零开始之uboot、移植uboot2017.01(一、移植前的准备)
    四、移植 JZ2440 开发板
    三、编译第一步 make xxx_defconfig——Makefile.build 脚本
    二、编译第一步 make xxx_defconfig
    一、配置介绍
  • 原文地址:https://www.cnblogs.com/hezhefly/p/8279918.html
Copyright © 2020-2023  润新知