• pyhton numpy库的学习


    1.Numpy核心数据结构:ndarray

    ndarray是由同一种类型的元素组成的N维数组

    1.1 ndarray的创建

    主要有以下几个函数进行创建:

    array()

    zeros():全零数组

    ones():全1数组

    empty():创建未初始化的数组

    1.1.1通过array()创建

    (1)一维 a = np.array([1,2,3,4])

    (2)二维 

    b = np.array([
         [1,2,3,4],
         [5,6,7,8]
    ])

    (3)三维

    c = np.array([
      [
        [1,2,3,4],
        [5,6,7,8]
      ],
      [
        [9,10,11,12],
        [13,14,15,16]
      ]
    ])

    1.1.2通过zeros()  ones()  empty()创建

      a = zeros((3,2))

    array([[0., 0.],
           [0., 0.],
           [0., 0.]])

      b = ones((3,2))

    array([[1., 1.],
           [1., 1.],
           [1., 1.]])

    c = np.empty((2,3,4))
    array([[[ 7.15526851e-312,  6.22522714e-322,  2.12199579e-312,
             -1.68416096e-310],
            [ 7.15570007e-312, -4.47213389e-313,  7.15541423e-312,
              8.20148972e-322],
            [ 0.00000000e+000, -1.73848404e-310,  7.15568433e-312,
             -4.47204282e-313]],
    
           [[ 7.15526851e-312,  6.66988622e-322,  2.12199579e-312,
             -1.79280714e-310],
            [ 0.00000000e+000,  4.47214284e-313,  7.15542855e-312,
              8.25089629e-322],
            [ 0.00000000e+000, -1.84713021e-310,  0.00000000e+000,
             -4.47219864e-313]]])
    1.1.3其他创建方式
    (1)arange函数 区间,左闭右开
      np.arange(20) #只写一个参数,默认起始值为0,步长为1
      array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19])

      np.arange(10,20)  #写两个参数,起始值和终止值,默认步长为1
        array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])

       np.arange(10,20,2) #写两个参数,起始值和终止值,步长
        array([10, 12, 14, 16, 18])
    (2)linspace函数  区间,全闭,参数:起始值、终止值、元素个数

      np.linspace(0,10,5)
        array([ 0. ,  2.5,  5. ,  7.5, 10. ])

    (3)logspace函数  起始值以10为底,n次方,元素个数
      np.logspace(0,2,5)   #n为0到2的等比数列
      array([1., 3.16227766, 10.,31.6227766 ,100.])
    (4)随机数random()
      np.random.random()
    1.2 ndarray属性

    1.3 ndarray修改形状
    a = np.arange(0,20,2)
    array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
    a.reshape(2,-1) #修改数组形状,未知行数或列数使用-1表示
    array([[ 0,  2,  4,  6,  8],
           [10, 12, 14, 16, 18]])

    1.4 数组的乘法和矩阵的乘法
     对应元素相乘:arr1 * arr2


    矩阵的乘法(点积、数量积):
    arr1.dot(arr2) 或者 np.dot(arr1,arr2)

    1. 5 索引

     1.5.1 多维数组的索引

    a = np.array([
        [
            [1,2,3,4],
            [5,6,7,8]
        ],
        [
            [9,10,11,12],
            [13,14,15,16]
        ],
        [
            [8,5,6,2],
            [4,3,2,1]
        ]
    ])
    a[1,1,3] #16
    a[1][1][3] #16
    a[1:2]
    array([[[ 9, 10, 11, 12],
            [13, 14, 15, 16]]])
    a[1,1:3,1] #array([14])

    1.5.2 布尔类型索引

    利用布尔类型的数组进行据索引,最终返回结果是对应索引数组中数据为True位置的值。

    1.5.3 花式索引

    利用整数数组进行索引

    arr = np.arange(32).reshape(8,4)
    arr
    array([[ 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, 25, 26, 27],
           [28, 29, 30, 31]])
    
    #获取第(0,0)、(3,3)、(5,2)这三个索引位置的数据
    print(arr[[0,3,5],[0,3,2]])
    [ 0 15 22]
    
    #获取第0、3、5行的第0、3、2列数据
    arr[np.ix_([0,3,5],[0,3,2])]
    array([[ 0,  3,  2],
           [12, 15, 14],
           [20, 23, 22]])

    1.6 数组转置 transpose()或T属性

    1.7 ndarray常用函数

    1.7.1聚合函数:mean max min std

    1.7.2 np.where函数

    where的三个参数,第一个是判断条件,第二个是为真时取值,第三是为假时取值

    xarr = np.array([1,2,3,4,5])
    yarr = np.array([-1,-2,8,9,10])
    condition = xarr > yarr
    result  = np.where(condition,xarr,yarr)
    result
    array([ 1,  2,  8,  9, 10])
    arr = np.array([
        [1,2,np.NaN,4],
        [4,5,6,np.NaN],
        [7,8,9,np.inf],
        [np.inf,np.e,np.pi,4]
    ])
    condition = np.isnan(arr) | np.isinf(arr)
    result = np.where(condition,0,arr)
    result
    array([[1.        , 2.        , 0.        , 4.        ],
           [4.        , 5.        , 6.        , 0.        ],
           [7.        , 8.        , 9.        , 0.        ],
           [0.        , 2.71828183, 3.14159265, 4.        ]])
    

      

    1.7.3 np.unique函数,去重

    arr = np.array(['a','f','c','d','e','a','b'])
    for a in arr:
       print(a,end=" ")
    a b c d e a b 
    
    arr2 = np.unique(arr)
    for a in arr2:
        print(a,end=" ")
    a b c d e f 




     



     
  • 相关阅读:
    【例题 8-11 UVA-10954】Add All
    【例题 8-10 UVA
    【BZOJ1226】学校食堂Dining(状压DP)
    【Tyvj1601】魔兽争霸(主席树,树套树)
    【BZOJ3504】危桥(最大流)
    【BZOJ1812】riv(多叉树转二叉树,树形DP)
    【Vijos1412】多人背包(背包DP)
    【Codevs1907】方格取数3(最小割)
    【Codevs1227】方格取数2(费用流)
    【Tyvj1982】武器分配(费用流)
  • 原文地址:https://www.cnblogs.com/weiququ/p/9123821.html
Copyright © 2020-2023  润新知