zoukankan      html  css  js  c++  java
  • numpy使用

    一、np.random

     在python数据分析的学习和应用过程中,经常需要用到numpy的随机函数,由于随机函数random的功能比较多

     np.random.rand():rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1,如:构造一个3*4的随机数二维矩阵

    import numpy as np
    np.random.rand(3,4)
    '''
    [ [0.70012799 0.49939184 0.77621113 0.17695425]
      [0.47841626 0.75552393 0.9530986  0.95578551]
      [0.6377073  0.82090994 0.08206589 0.05983002]  ]
    '''
    
    np.random.rand(3,4,5)
    '''
    [[[0.60014868 0.85951926 0.49306041 0.30224236 0.7943514 ]
      [0.40475082 0.1187137  0.84394612 0.74372474 0.35996537]
      [0.3555313  0.9134652  0.64137736 0.23589597 0.83533445]
      [0.78739993 0.25946225 0.2448853  0.01645085 0.7752245 ]]
    
     [[0.59034985 0.05762904 0.89938701 0.88729505 0.80461143]
      [0.42468046 0.3289913  0.4740535  0.88746905 0.81706704]
      [0.4217478  0.00604856 0.29234159 0.96485918 0.78208513]
      [0.36771675 0.0077454  0.15152365 0.32922038 0.29908242]]
    
     [[0.00252579 0.82497454 0.18105991 0.24632329 0.52462868]
      [0.60844183 0.30944412 0.6481987  0.94634654 0.75934241]
      [0.61328974 0.12232515 0.15702142 0.75872478 0.39437735]
      [0.96049556 0.75978279 0.38059127 0.37746655 0.32977045]]]
    '''
    

    二、np.loadtxt()

     np.loadtxt()可以用来读取文件,主要是txt文件,并且文本内容必须是数值

    '''test.txt:
    1, 2, 3, 4 
    2, 3, 4, 5
    3, 4, 5, 6
    4, 5, 6, 7
    '''
    np.loadtxt('test.txt', delimiter=',')
    '''
    [[1. 2. 3. 4.]
     [2. 3. 4. 5.]
     [3. 4. 5. 6.]
     [4. 5. 6. 7.]]
    '''
    
    '''test.txt
    A, B, C, D
    1, 2, 3, 4
    2, 3, 4, 5
    3, 4, 5, 6
    4, 5, 6, 7
    '''
    np.loadtxt('test.txt',delimiter=',', skiprows=1, dtype=int)#跳过第一行,如果1改为2,则跳过前两行,dtype指定了数据类型
    '''
    [[1 2 3 4]
     [2 3 4 5]
     [3 4 5 6]
     [4 5 6 7]]
    '''
    
    '''
    #A, B, C, D
    1, 2, 3, 4
    2, 3, 4, 5
    3, 4, 5, 6
    4, 5, 6, 7
    '''
    np.loadtxt('test.txt',delimiter=',', skiprows=1, dtype=int, comments='#')#跳过#行
    '''
    [[1 2 3 4]
     [2 3 4 5]
     [3 4 5 6]
     [4 5 6 7]]
    '''
    

    三、np.linspace()[:, np.newaxis]

    #np.newaxis的功能是插入新维度,看下面的例子:
    a=np.array([1,2,3,4,5])
    print(a.shape)
    print(a)
    '''
    (5,)
    [1 2 3 4 5]
    可以看出a是一个一维数组
    '''
     
    x_data=np.linspace(-1,1,300)[:,np.newaxis]
    a=np.array([1,2,3,4,5])
    b=a[np.newaxis,:]
    print(a.shape,b.shape)
    print(a)
    print(b)
    '''
    输出结果:
    (5,) (1, 5)
    [1 2 3 4 5]
    [[1 2 3 4 5]]
    '''
    
    x_data=np.linspace(-1,1,300)[:,np.newaxis]
    a=np.array([1,2,3,4,5])
    b=a[:,np.newaxis]
    print(a.shape,b.shape)
    print(a)
    print(b)
    '''
    输出结果
    (5,) (5, 1)
    [1 2 3 4 5]
    [[1]
      [2]
      [3]
      [4]
      [5]]
    ''' 
    '''
    可以看出np.newaxis分别是在行或列上增加维度,原来是(6,)的数组,在行上增加维度变成(1,6)的二维数组,在列上增加维度变为(6,1)的二维数组
    '''
    

      

    四、numpy的var std cov

     np.var:表示方差,即各项-均值的平方求和后再除以N

     std:表示标准差,是var的平方根

     cov:协方差,与var类似,但是除以(N-1)

    import numpy as np
    
    # 构建测试数据,均值为10
    sc = [9.7, 10, 10.3, 9.7, 10, 10.3, 9.7, 10, 10.3]
    
    # 输出均值为10.0
    print(np.mean(sc))
    
    # 输出var, 即(0.09 + 0 + 0.09 + 0.09 + 0 + 0.09 + 0.09 + 0 + 0.09) = 0.54, 再0.54 / 9=0.06, 输出0.06
    print(np.var(sc))
    
    # 相当于0.06 开根号
    print(np.std(sc))
    
    # 0.54 / 8 = 0.0675
    print(np.cov(sc))
    

    五、np.argmax()

     这个函数可以用来求一个序列的最大值,比如面试官给你一个列表,让你求最大值,除了遍历之外,可以调用这个函数来求,这个函数返回的是最大值索引

    import numpy as np
    list_1 = [4,5,6,9,3,6,8,9]
    np.argmax(list_1)
    #3

    六、np.random.multivariate_normal()

    #用于根据实际情况生成一个多元正态分布矩阵
    import numpy as np
    
    u1 = [5,35]
    sigma = np.matrix([[30,0],[0,30]])
    
    print(np.random.multivariate_normal(u1, sigma,1))
    #[[ 6.34077584 40.81904151]]
    

    七、np.linalg

    import numpy as np
    #np.linalg.inv():矩阵求逆
    #np.linalg.det():矩阵求行列式(标量)

     

    八、np.unpackbits:可以把整数转化成2进制数

    import numpy as np
    binary = np.unpackbits(np.array( [range(4)], dtype=np.uint8 ).T, axis=1)
    '''
    [ [0 0 0 0 0 0 0 0]
     [0 0 0 0 0 0 0 1]
     [0 0 0 0 0 0 1 0]
     [0 0 0 0 0 0 1 1] ]
    
    '''
    
    binary_reverse = np.fliplr( binary )#左右翻转
    '''
    [ [0 0 0 0 0 0 0 0]
     [1 0 0 0 0 0 0 0]
     [0 1 0 0 0 0 0 0]
     [1 1 0 0 0 0 0 0] ]
    '''
    

    九、np.array和np.asarray()区别

  • 相关阅读:
    SVGEditor
    SVG六基本元素
    SVG在网页中的四种使用方式
    Chrome中java因过期而遭到阻止
    Weblogic常见故障常:JDBC Connection Pools
    MyBatis java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
    MYBATIS 无效的列类型: 1111
    [MyBatis]mapperLocations属性通配符的使用
    secureCRT自动化脚本
    google protocol buffer的原理和使用(四)
  • 原文地址:https://www.cnblogs.com/always-fight/p/9324675.html
Copyright © 2011-2022 走看看