zoukankan      html  css  js  c++  java
  • (二)初识NumPy库(数组的操作和运算)

    本章主要介绍的是ndarray数组的操作和运算!

    一、 ndarray数组的操作:

    操作是指对数组的索引和切片。索引是指获取数组中特定位置元素的过程;切片是指获取数组中元素子集的过程。

    1、一维数组的索引和切片与python的列表类似:

     索引:

    import numpy as np
    
    a = np.array([9, 8, 7, 6, 5])
    print(a[2])
    7

    切片:起始编号:终止编号:(不含):步长  三元素用冒号分割

    import numpy as np
    a = np.array([9, 8, 7, 6, 5])
    print(a[1:4:2])
    [8 6]

    2、多维数组的索引和切片:

    索引:

    import numpy as np
    a = np.arange(24).reshape((2, 3, 4))
    print(a)
    print(a[1, 2, 3])
    print(a[0, 1, 2])
    print(a[-1, -2, -3])
    [[[ 0  1  2  3]
      [ 4  5  6  7]
      [ 8  9 10 11]]
    
     [[12 13 14 15]
      [16 17 18 19]
      [20 21 22 23]]]
    23
    6
    17

    切片:选取一个维度用:

    import numpy as np
    a = np.arange(24).reshape((2, 3, 4))
    print(a)
    print(a[:, 1, -3])              
    print(a[:, 1:3, :])
    print(a[:, :, ::2])
    [[[ 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]]

    二、ndarray数组的运算:

    1、数组与标量之间的运算作用于数组的每一个元素:

    import numpy as np
    a = np.arange(24).reshape((2, 3, 4))
    print(a)
    print(a.mean())
    print(a / a.mean())
    
    [[[ 0  1  2  3]
      [ 4  5  6  7]
      [ 8  9 10 11]]
    
     [[12 13 14 15]
      [16 17 18 19]
      [20 21 22 23]]]
    11.5
    [[[0.         0.08695652 0.17391304 0.26086957]
      [0.34782609 0.43478261 0.52173913 0.60869565]
      [0.69565217 0.7826087  0.86956522 0.95652174]]
    
     [[1.04347826 1.13043478 1.2173913  1.30434783]
      [1.39130435 1.47826087 1.56521739 1.65217391]
      [1.73913043 1.82608696 1.91304348 2.        ]]]

     2、Numpy的一元函数:

    对ndarray中的数据执行元素级运算的函数:

    Numpy的一元函数
    np.abs(x) np.fabs(x)  计算数组各元素的绝对值
     np.sqrt(x)  计算数组各元素的平方根
     np.square(x)  计算数组各元素的平方
     np.log(x) np.log10(x) np.log2(x)  计算数组各元素的自然对数、10底对数和2底对数
     np.ceil(x) np.floor(x)  计算数组各元素的ceiling和floor值(ceiling是不超过这个元素的整数值,floor是小于这个元素的最大整数值)
    np.rint(x)  计算数组各元素的四舍五入值
     np.modf(x)  将数组各元素的小数和整数部分以两个独立数组形式返回
     np.cos(x) np.cosh(x) np.sin(x) np.sinh(x) np.tan(x) np.tanh(x)  计算数组各元素的普通型和双曲线的三角函数
     np.exp(x)  计算数组各元素的指数值
     np.sign(x)  计算数组各元素的符号值,1(+),0,-1(-)

     

    举例说明:

    import numpy as np
    a = np.arange(24).reshape((2, 3, 4))
    print(np.square(a))
    a = np.sqrt(a)
    print(a)
    print(np.modf(a))
    
    [[[ 0  1  2  3]
      [ 4  5  6  7]
      [ 8  9 10 11]]
    
     [[12 13 14 15]
      [16 17 18 19]
      [20 21 22 23]]]
    11.5
    [[[0.         0.08695652 0.17391304 0.26086957]
      [0.34782609 0.43478261 0.52173913 0.60869565]
      [0.69565217 0.7826087  0.86956522 0.95652174]]
    
     [[1.04347826 1.13043478 1.2173913  1.30434783]
      [1.39130435 1.47826087 1.56521739 1.65217391]
      [1.73913043 1.82608696 1.91304348 2.        ]]]
    [[[  0   1   4   9]
      [ 16  25  36  49]
      [ 64  81 100 121]]
    
     [[144 169 196 225]
      [256 289 324 361]
      [400 441 484 529]]]
    [[[0.         1.         1.41421356 1.73205081]
      [2.         2.23606798 2.44948974 2.64575131]
      [2.82842712 3.         3.16227766 3.31662479]]
    
     [[3.46410162 3.60555128 3.74165739 3.87298335]
      [4.         4.12310563 4.24264069 4.35889894]
      [4.47213595 4.58257569 4.69041576 4.79583152]]]
    (array([[[0.        , 0.        , 0.41421356, 0.73205081],
            [0.        , 0.23606798, 0.44948974, 0.64575131],
            [0.82842712, 0.        , 0.16227766, 0.31662479]],
    
           [[0.46410162, 0.60555128, 0.74165739, 0.87298335],
            [0.        , 0.12310563, 0.24264069, 0.35889894],
            [0.47213595, 0.58257569, 0.69041576, 0.79583152]]]), array([[[0., 1., 1., 1.],
            [2., 2., 2., 2.],
            [2., 3., 3., 3.]],
    
           [[3., 3., 3., 3.],
            [4., 4., 4., 4.],
            [4., 4., 4., 4.]]]))

    3、Numpy的二元函数:

    Numpy的二元函数
    +-*/ 两个数组各元素进行对应运算
    np.maximum(x,y) np.fmax() np.minimum(x,y) np.fmin() 元素级的最大值/最小值计算
    np.mod(x,y) 元素级的模运算
    np.copysign(x,y) 将数组y中各元素值的符号赋值给数组x对应元素
    ><>=<===!= 算术比较,产生布尔型数组

    举例说明:

    import numpy as np
    a = np.arange(24).reshape((2, 3, 4))
    b = np.sqrt(a)
    print(np.maximum(a, b))
    print(a > b)
    
    [[[ 0.  1.  2.  3.]
      [ 4.  5.  6.  7.]
      [ 8.  9. 10. 11.]]
    
     [[12. 13. 14. 15.]
      [16. 17. 18. 19.]
      [20. 21. 22. 23.]]]
    [[[False False  True  True]
      [ True  True  True  True]
      [ True  True  True  True]]
    
     [[ True  True  True  True]
      [ True  True  True  True]
      [ True  True  True  True]]]
                  
    申明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    201521123108 《Java程序设计》第八周学习总结
    201521123108 《Java程序设计》第7周学习总结
    201521123108 《Java程序设计》第6周学习总结
    201521123108 《Java程序设计》第5周学习总结
    201521123108 《Java程序设计》第4周学习总结
    201521123108《Java程序设计》第3周学习总结
    201521123107 《Java程序设计》第11周学习总结
    201521123107 《Java程序设计》第10周学习总结
    201521123107 《Java程序设计》第9周学习总结
    201521123107 《Java程序设计》第8周学习总结
  • 原文地址:https://www.cnblogs.com/lsyb-python/p/11900845.html
Copyright © 2011-2022 走看看