• numpy数组(四)


    import numpy as ny
    
    
    
    """
    和列表不同的是,通过切片获取的新数组是原始数组的一个视图。它与原始数组共享同一
    块数据存储空间,所以原始数组也一定会变化
    """
    a=ny.arange(10,1,-1)
    b=a[3:7]
    print('a:  ',a)
    print('b:  ',b)
    b[2]=100
    print('after b:  ',b)
    print('after a:  ',a)
    """
    a:   [10  9  8  7  6  5  4  3  2]
    b:   [7 6 5 4]
    after b:   [  7   6 100   4]
    after a:   [ 10   9   8   7   6 100   4   3   2]
    """
    """
     获取数组x中下标为 3、3、1、8的4 个元素,组成一个新的数组
    """
    c=a[[3,3,1,8]]
    d=a[ny.array([3,3,1,8])]
    print('c:  ',c)
    print('d:  ',d)
    #多维数组也是适用的
    e=a[ny.array([[3,3,1,8],[3,3,-3,8]])]
    print('e:  
    ',e)
    """
    c:   [7 7 9 2]
    d:   [7 7 9 2]
    e:  
     [[7 7 9 2]
     [7 7 4 2]]
    """
    x = ny.random.rand(10)  # 产生一个长度为 10、元素值为0到 1 的随机数组
    print('x:  ',x)
    print('after x:  ',x>0.5)
    print('after x:  ',x[x>0.5])
    """
    x:   [0.11735827 0.14931258 0.90332179 0.69256899 0.48639278 0.99080655
     0.9962788  0.57468302 0.91736589 0.90630687]
    after x:   [False False  True  True False  True  True  True  True  True]
    after x:   [0.90332179 0.69256899 0.99080655 0.9962788  0.57468302 0.91736589
     0.90630687]
    """
    #使用切片来访问多维数组
    
    a=ny.array([1,2,3,4,5,
                6,7,8,9,10,
                11,12,13,14,15,
                16,17,18,19,20,
                21,22,23,24,25]).reshape(5,5)
    print('a[0,3:5]:  ',a[0,3:5])
    print('a[4:,4:]:  ',a[4:,4:])
    """
    a[0,3:5]:   [4 5]
    a[4:,4:]:   [[25]]
    """
    a = ny.arange(0, 60, 10).reshape(-1, 1)+ny.arange(0,6)
    print('a:  
    ',a)
    """
    a:  
     [[ 0  1  2  3  4  5]
     [10 11 12 13 14 15]
     [20 21 22 23 24 25]
     [30 31 32 33 34 35]
     [40 41 42 43 44 45]
     [50 51 52 53 54 55]]
    """
    #slice 对象
    #在[]中可以使用以冒号隔开的两个或三个整数表示切片,但是单独生成切片对象时需要
    #使用 slice()创建。它有三个参数,分别为开始值、结束值和间隔步长,当这些值需要省略时
    #可以使用None
    
    idx = slice(None, None, 2), slice(2,None)
    #a[idx][idx]=a[::2,2:][::2,2:]
    print('a[idx][idx]:  
    ',a[idx][idx])#其实相当于做了两道过滤
    print('a[::2,2:]:  
    ',a[::2,2:])
    """
    a[idx][idx]:  
     [[ 4  5]
     [44 45]]
    a[::2,2:]:  
     [[ 2  3  4  5]
     [22 23 24 25]
     [42 43 44 45]]
    """
    
  • 相关阅读:
    [BZOJ4444][SCOI2015]国旗计划(倍增)
    [BZOJ4423][AMPPZ2013]Bytehattan(对偶图+并查集)
    [BZOJ4416][SHOI2013]阶乘字符串(子集DP)
    [BZOJ3203][SDOI2013]保护出题人(凸包+三分)
    [BZOJ4026]dC Loves Number Theory(线段树)
    51nod部分容斥题解
    [CodeVS4438]YJQ Runs Upstairs
    [HDU4906]Our happy ending
    牛客网NOIP赛前集训营-提高组(第四场)游记
    [BJWC2011]元素
  • 原文地址:https://www.cnblogs.com/peterleee/p/9373758.html
Copyright © 2020-2023  润新知