zoukankan      html  css  js  c++  java
  • numpy——数组存取


    1、常规办法:数组元素的存取方法和Python的标准方法相同
    a = np.arange(10)
        #>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     # # # 获取某个元素
    print(a[3])
        #>> 3
     # # #  切片[3,6),左闭右开
    print(a[3:6])
        #>> [3, 4, 5] 
     # # # 省略开始下标,表示从0开始
    print a[:5]
        #>>[0, 1, 2, 3, 4]
     # # # 下标为负表示从后向前数
    print( a[3:])
        #>>[3, 4, 5, 6, 7, 8, 9]
     # # # 步长为2
    print a[1:9:2]
        #>>[1, 3, 5, 7]
     # # # 步长为-1,即翻转
    print (a[::-1])
    #>>[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
     # # # 切片数据是原数组的一个视图,与原数组共享内容空间,可以直接修改元素值
    a[1:4] = 10, 20, 30
    print( a)
    #>>[ 0, 10, 20, 30,  4,  5,  6,  7,  8,  9]
     # # # 因此,在实践中,切实注意原始数据是否被破坏,如:
    b = a[2:5]
    b[0] = 200
    print( a)
     #>>[  0  10 200  30   4   5   6   7   8   9]
    2、整数/布尔数组存取
    1)整型
      # 根据整数数组存取:当使用整数序列对数组元素进行存取时,将使用整数序列中的每个元素作为下标,整数序列可以是列表(list)或者数组(ndarray)。
      # 使用整数序列作为下标获得的数组不和原始数组共享数据空间。
        a = np.logspace(0, 9, 10, base=2)
        print (a)
        #>>[  1.,   2.,   4.,   8.,  16.,  32.,  64., 128., 256., 512.]
    
        i = np.arange(0, 10, 2)
        print i
        #>>[0, 2, 4, 6, 8]

    # # # 利用i取a中的元素 b = a[i] print b # # b的元素更改,a中元素不受影响 b[2] = 1.6 print b #>>[ 1. , 4. , 1.6, 64. , 256. ] print a #>>[ 1., 2., 4., 8., 16., 32., 64., 128., 256., 512.]

    2)布尔数

    使用布尔数组i作为下标存取数组a中的元素:返回数组a中所有在数组b中对应下标为True的元素
    # 生成10个满足[0,1)中均匀分布的随机数
    a = np.random.rand(10)
    print(a)
    #>>array([0.18508752, 0.46099816, 0.80814244, 0.34301555, 0.92376581, 0.23402939, 0.74400314, 0.55217242, 0.46284303, 0.61656194])

    # 大于0.5的元素索引
    print(a > 0.5)
     #>>[False False True False True False True True False True]
    
    
    # 大于0.5的元素
    b = a[a > 0.5]
    print(b)
    #>>[0.80814244, 0.92376581, 0.74400314, 0.55217242, 0.61656194]

    # 将原数组中大于0.5的元素截取成0.5
    a[a > 0.5] = 0.5
    #>>[0.18508752, 0.46099816, 0.5       , 0.34301555, 0.5       , 0.23402939, 0.5       , 0.5       , 0.46284303, 0.5       ]
    # b不受影响

    3) 二维数组的切片

        # [[ 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]]
        a = np.arange(0, 60, 10)    # 行向量
        print (a)
        #>>[ 0, 10, 20, 30, 40, 50]
    
        b = a.reshape((-1, 1))      # 转换成列向量
        print (b)
        #>>[[ 0],
         #     [10],
         #     [20],
         #     [30],
         #     [40],
         #     [50]]
    
        c = np.arange(6)
        print(c)    #>>[0, 1, 2, 3, 4, 5]
        f = b + c   # 行 + 列
        print(f)     
      #>>  [[ 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]]
        
    # 合并上述代码
        a = np.arange(0, 60, 10).reshape((-1, 1)) + np.arange(6)
        print(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]]
    
        # 二维数组的切片
        print( a[(0,1,2,3), (2,3,4,5)] ) #>>[ 2, 13, 24, 35]
        print( a[3:, [0, 2, 5]])
        #>>[[30, 32, 35],
         #     [40, 42, 45],
         #     [50, 52, 55]]
    
        i = np.array([True, False, True, False, False, True])
        print( a[i])
    # >> [[ 0,  1,  2,  3,  4,  5],
        #   [20, 21, 22, 23, 24, 25],
        #   [50, 51, 52, 53, 54, 55]]
    
        print( a[i, 3])
    # >>[ 3, 23, 53]
     
  • 相关阅读:
    js中.和[]的区别
    JavaScript【引用方法】操作方法
    JavaScript【引用方法】重排序方法
    JavaScript【引用方法】队列方法
    JavaScript【引用类型】栈方法
    JavaScript【引用类型】转换方法
    JavaScript【引用类型】检测类型
    JavaScript【引用类型】Array 类型
    JavaScript【引用类型】Object 类型
    【HTML5 绘图与动画】 使用图像 1.导入图像 2.缩放图像 3.裁切图像
  • 原文地址:https://www.cnblogs.com/Theo-sblogs/p/12264697.html
Copyright © 2011-2022 走看看