zoukankan      html  css  js  c++  java
  • 简单记录numpy库的某些基本功能

    这里介绍python的一个库,numpy库,这个库是机器学习,数据分析最经常用到的库之一,也是利用python做数据必须用到的一个库,入门机器学习学的第一个python库就是它了。

    先对其导入到python中,相关代码如下:

    import numpy
    

     1.首先利用这个库创建一个一维数组:

    a=np.arange(10)
    print(a)
    

      输出结果如下:

    [0 1 2 3 4 5 6 7 8 9]
    

     2.创建一个布尔型的数组:

    a=np.full((3,3),True,dtype=bool)
    print(a)
    

      结果如下:

    [[ True  True  True]
     [ True  True  True]
     [ True  True  True]]
    

     3.从一维数组从提取满足条件的元素,比方说提取出奇数的元素:

    import numpy as np
    a=np.arange(10)
    print(a[a%2==1])
    

      结果如下:

    [1 3 5 7 9]
    

     4.将数组中的所有奇数替换成-1而不影响原始的数组:

    import numpy as np
    a=np.arange(10)
    print(a[a%2==1])
    out=np.where(a%2==1,-1,a)
    print(out)
    print(a)
    

      结果如下:

    [1 3 5 7 9]
    [ 0 -1  2 -1  4 -1  6 -1  8 -1]
    [0 1 2 3 4 5 6 7 8 9]
    

     5.将一行的数组转化为两行的数组:

    import numpy as np
    a=np.arange(10)
    print(a)
    b=a.reshape(2,-1)
    print(b)
    

      结果如下:

    [0 1 2 3 4 5 6 7 8 9]
    [[0 1 2 3 4]
     [5 6 7 8 9]]
    

     6.组合两个不同的数组,垂直堆叠数组:

    import numpy as np
    a=np.arange(10).reshape(2,-1)
    print(a)
    b=np.ones(10).reshape(2,-1)
    print(b)
    c=np.concatenate((a,b),axis=0)
    print(c)
    

      结果如下:

    [[0 1 2 3 4]
     [5 6 7 8 9]]
    [[1. 1. 1. 1. 1.]
     [1. 1. 1. 1. 1.]]
    [[0. 1. 2. 3. 4.]
     [5. 6. 7. 8. 9.]
     [1. 1. 1. 1. 1.]
     [1. 1. 1. 1. 1.]]
    

     7.采用另外的一种方法水平堆叠两个不同的数组:

    import numpy as np
    a=np.arange(10).reshape(2,-1)
    print(a)
    b=np.ones(10).reshape(2,-1)
    print(b)
    c=np.hstack((a,b))
    print(c)
    #垂直堆叠的话将hstack改为vstack

     结果如下:

    [[0 1 2 3 4]
     [5 6 7 8 9]]
    [[1. 1. 1. 1. 1.]
     [1. 1. 1. 1. 1.]]
    [[0. 1. 2. 3. 4. 1. 1. 1. 1. 1.]
     [5. 6. 7. 8. 9. 1. 1. 1. 1. 1.]]
    

     8.如何获得两个数组之间的共同元素:

    import numpy as np
    a=np.array([0,1,2,3,4,5,6,7,8,9]).reshape(2,-1)
    b=np.array([7,2,3,8,6,5,4,0,8,8]).reshape(2,-1)
    c=np.intersect1d(a,b)
    print(c)
    

      结果:

    [0 2 3 4 5 6 7 8]
    

     9.如何交换二维数组中的两个列,比方说第一和第二列:

    import numpy as np
    a=np.array([0,1,2,3,4,5,6,7,8]).reshape(-1,3)
    print(a)
    b=a[:,[1,0,2]]
    print(b)
    

      结果:

    [[0 1 2]
     [3 4 5]
     [6 7 8]]
    [[1 0 2]
     [4 3 5]
     [7 6 8]]
    

     10.创建一个随机数组:

    import numpy as np
    a=np.random.random(9).reshape(3,3)
    print(a)
    

      结果:

    [[0.35743078 0.45562558 0.47565199]
     [0.21876288 0.7162558  0.88601442]
     [0.87192744 0.2853304  0.48398916]]
    

     11.打印数组并且保留3位小数:

    import numpy as np
    a=np.random.random(9).reshape(3,3)
    print(a)
    np.set_printoptions(precision=3)
    print(a)
    

      结果:

    [[0.61684015 0.01555676 0.59569796]
     [0.74603776 0.04927135 0.98439895]
     [0.38879249 0.71765352 0.24739962]]
    [[0.617 0.016 0.596]
     [0.746 0.049 0.984]
     [0.389 0.718 0.247]]
    

     12.求数组的平均值,中位数和标准差:

    import numpy as np
    a=np.random.random(9).reshape(3,3)
    print(a)
    mean,mid,std=np.mean(a),np.median(a),np.std(a)
    print(mean,mid,std)
    

      结果:

    [[0.69353914 0.41381197 0.08503532]
     [0.59348658 0.72611527 0.93285931]
     [0.11307856 0.01634739 0.71822684]]
    0.476944488122813 /t 0.593486582461256 0.3146044225752866
    

      这里顺便提一下其他的函数,比方绝对值函数abs,平方函数square,四舍五入函数rint,方差var,求和平均值就不说了。。

    13.多维数组的切片:

    import numpy as np
    a=np.arange(24).reshape((2,3,4))
    print(a)
    print()
    #选取一个维度的
    b=a[:,1,-3]
    print(b)
    print()
    c=a[:,1:3,:]
    print(c)
    print()
    #利用步长跳跃切片
    d=a[:,:,::2]
    print(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]]]
    
    [ 5 17]
    
    [[[ 4  5  6  7]
      [ 8  9 10 11]]
    
     [[16 17 18 19]
      [20 21 22 23]]]
    
    [[[ 0  2]
      [ 4  6]
      [ 8 10]]
    
     [[12 14]
      [16 18]
      [20 22]]]
    

      暂时第一篇博客就写到这,因为自己是菜鸡中的菜鸡,所以如果以上的代码或者结果有错误的话,也很正常,欢迎指正指导!

  • 相关阅读:
    HDU 2045 不容易系列之(3)—— LELE的RPG难题 (递推)
    HDU 2050 折线分割平面 (递推)
    HDU 5441 Travel (并查集+数学+计数)
    HDU 4597 Play Game (DP,记忆化搜索,博弈)
    HDU 4599 Dice (概率DP+数学+快速幂)
    HDU 4497 GCD and LCM (数学,质数分解)
    UVa 1312 Cricket Field (枚举+离散化)
    HDU 4499 Cannon (暴力求解)
    HDU 4496 D-City (并查集)
    javascript你不知道的知识点
  • 原文地址:https://www.cnblogs.com/yiduobaozhiblog1/p/8576683.html
Copyright © 2011-2022 走看看