zoukankan      html  css  js  c++  java
  • 第84天:NumPy 数学函数

    by 闲欢

    本文向大家介绍一下 NumPy 常见的数学函数。

    NumPy 三角函数

    三角函数是基本初等函数之一,是以角度(数学上最常用弧度制,下同)为自变量,角度对应任意角终边与单位圆交点坐标或其比值为因变量的函数。三角函数一般用于计算三角形中未知长度的边和未知的角度,在导航、工程学以及物理学方面都有广泛的用途。

    常见的三角函数包括正弦函数、余弦函数和正切函数。下面我们来学习这三个常见的三角函数:

    函数 描述
    sin() 数组中角度的正弦值
    cos() 数组中角度的余弦值
    tan() 数组中角度的正切值
    arcsin() 数组中角度的反正弦值
    arccos() 数组中角度的反余弦值
    arctan() 数组中角度的反正切值
    degrees() 将弧度转换成角度

    我们直接来看实例:

    import numpy as np
    
    a = np.array([0, 30, 45, 60, 90])
    
    print(np.char.center('不同角度的正弦值', 30, '*'))
    # 通过乘 pi/180 转化为弧度
    sin = np.sin(a*np.pi/180)
    print(sin)
    print('
    ')
    
    print(np.char.center('不同角度的余弦值', 30, '*'))
    # 通过乘 pi/180 转化为弧度
    cos = np.cos(a*np.pi/180)
    print(cos)
    print('
    ')
    
    print(np.char.center('不同角度的正切值', 30, '*'))
    # 通过乘 pi/180 转化为弧度
    tan = np.tan(a*np.pi/180)
    print(tan)
    print('
    ')
    
    print(np.char.center('不同角度的反正弦值', 30, '*'))
    arcsin = np.arcsin(sin)
    # 将弧度转换成角度打印输出
    print(np.degrees(arcsin))
    print('
    ')
    
    print(np.char.center('不同角度的反余弦值', 30, '*'))
    arccos = np.arccos(cos)
    # 将弧度转换成角度打印输出
    print(np.degrees(arccos))
    print('
    ')
    
    print(np.char.center('不同角度的反正切值', 30, '*'))
    arctan = np.arctan(tan)
    # 将弧度转换成角度打印输出
    print(np.degrees(arctan))
    print('
    ')
    
    # 返回
    ***********不同角度的正弦值***********
    [0.         0.5        0.70710678 0.8660254  1.        ]
    ***********不同角度的余弦值***********
    [1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01
     6.12323400e-17]
    ***********不同角度的正切值***********
    [0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00
     1.63312394e+16]
    **********不同角度的反正弦值***********
    [ 0. 30. 45. 60. 90.]
    **********不同角度的反余弦值***********
    [ 0. 30. 45. 60. 90.]
    **********不同角度的反正切值***********
    [ 0. 30. 45. 60. 90.]
    

    上面例子中,我们先计算不同角度的正弦值、余弦值、正切值,然后我们通过反三角函数,将前面计算的值计算成弧度,然后通过 degrees 函数转换成角度。我们可以看到最后的出来的角度和开始输入的数组的角度是一样的。

    NumPy 四舍五入函数

    我们在数据的处理中可能会遇到需要将一组数字进行四舍五入操作,这时候我们就可以使用 NumPy 提供的四舍五入函数来处理了。

    函数 描述
    around() 四舍五入
    round() 舍弃小数位
    floor() 向下取整
    ceil() 向上取整

    numpy.around()

    对数组中的数字进行四舍五入

    我们来看实例:

    import numpy as np
    
    a = np.array([1, 2.0, 30.12, 129.567])
    
    # 四舍五入(取整)
    print(np.around(a))
    # 四舍五入(取一位小数)
    print(np.around(a, decimals=1))
    # 四舍五入(取小数点左侧第一位)
    print(np.around(a, decimals=-1))
    
    # 返回
    [  1.   2.  30. 130.]
    [  1.    2.   30.1 129.6]
    [  0.   0.  30. 130.]
    

    我们可以通过 decimals 参数来表示舍入的小数位数,默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置。

    numpy.round()

    对数组中的数字进行若干位的舍弃。

    我们来看实例:

    import numpy as np
    
    a = np.array([1, 2.0, 30.12, 129.567])
    
    # 只舍不入(取整)
    print(np.around(a))
    # 只舍不入(到小数点后一位)
    print(np.around(a, decimals=1))
    # 只舍不入(取小数点左侧第一位)
    print(np.around(a, decimals=-1))
    
    # 返回
    [  1.   2.  30. 130.]
    [  1.    2.   30.1 129.6]
    [  0.   0.  30. 130.]
    

    这个函数与 around 函数的区别就是只是舍弃,不做四舍五入。

    numpy.floor()

    返回小于或者等于指定表达式的最大整数,即向下取整。

    我们来看实例:

    import numpy as np
    
    a = np.array([1, 2.0, 30.12, 129.567])
    
    # 向下取整
    print(np.floor(a))
    
    # 返回
    [  1.   2.  30. 129.]
    

    这个函数很好理解,就是舍弃小数位。

    numpy.ceil()

    返回大于或者等于指定表达式的最小整数,即向上取整。

    我们来看实例:

    import numpy as np
    
    a = np.array([1, 2.0, 30.12, 129.567])
    
    # 向上取整
    print(np.ceil(a))
    
    # 返回
    [  1.   2.  31. 130.]
    

    这个函数和上面的 floor 是相反含义的函数,向上取整意思是如果没有小数位或者小数位是0,取当前整数;如果有小数位并且小数位不是0,则取当前数字的整数加1。

    NumPy 算术函数

    接下来我们来介绍一下 NumPy 的几个常用的算术函数:

    函数 描述
    add() 两个数组元素相加
    multiply() 两个数组元素相乘
    divide() 两个数组元素相除
    subtract() 两个数组元素相减
    pow() 将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂
    mod() 计算输入数组中相应元素的相除后的余数

    我们先来看看两个数组元素的加减乘除的实例:

    import numpy as np
    
    a = np.arange(6, dtype=np.float_).reshape(2, 3)
    print('第一个数组:')
    print(a)
    print('第二个数组:')
    b = np.array([10, 10, 10])
    print(b)
    print('
    ')
    
    print(np.char.center('两个数组相加', 20, '*'))
    print(np.add(a, b))
    print('
    ')
    
    print(np.char.center('两个数组相减', 20, '*'))
    print(np.subtract(a, b))
    print('
    ')
    
    print(np.char.center('两个数组相乘', 20, '*'))
    print('两个数组相乘:')
    print(np.multiply(a, b))
    print('
    ')
    
    print(np.char.center('两个数组相除', 20, '*'))
    print(np.divide(a, b))
    print('
    ')
    
    # 返回
    第一个数组:
    [[0. 1. 2.]
     [3. 4. 5.]]
    第二个数组:
    [10 10 10]
    *******两个数组相加*******
    [[10. 11. 12.]
     [13. 14. 15.]]
    *******两个数组相减*******
    [[-10.  -9.  -8.]
     [ -7.  -6.  -5.]]
    *******两个数组相乘*******
    两个数组相乘:
    [[ 0. 10. 20.]
     [30. 40. 50.]]
    *******两个数组相除*******
    [[0.  0.1 0.2]
     [0.3 0.4 0.5]]
    
    

    在上面例子中,我们先定义了两个数组,第一个数一个二维数组,第二个是一个一维数组,然后对两个数组的元素进行加减乘除操作,返回的是一个二维数组。

    这里需要注意的是数组必须具有相同的形状或符合数组广播规则。

    numpy.pow

    将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。

    我们先来看看实例:

    import numpy as np
    
    c = np.array([10, 100, 1000])
    print('第一个数组是:')
    print(c)
    print('
    ')
    
    print(np.char.center('调用 power 函数', 20, '*'))
    print(np.power(c, 2))
    print('
    ')
    
    d = np.array([1, 2, 3])
    print('第二个数组是:')
    print(d)
    print('
    ')
    
    print(np.char.center('再次调用 power 函数', 20, '*'))
    print(np.power(c, d))
    
    # 返回
    第一个数组是:
    [  10  100 1000]
    ****调用 power 函数*****
    [    100   10000 1000000]
    第二个数组是:
    [1 2 3]
    ***再次调用 power 函数****
    [        10      10000 1000000000]
    

    从例子中我们可以看到,如果第二个参数是数字,就将第一个参数数组中的每个元素作为底数,计算它与第二个参数的幂;如果第二个参数是数组,那就将第一个参数数组中的每个元素作为底数,计算它与第二个数组中元素的幂。

    numpy.mod()

    计算输入数组中相应元素的相除后的余数。

    我们先来看看实例:

    import numpy as np
    
    e = np.array([10, 20, 30])
    f = np.array([3, 5, 7])
    print('第一个数组:')
    print(e)
    print('
    ')
    
    print('第二个数组:')
    print(f)
    print('
    ')
    
    print(np.char.center('调用 mod 函数', 20, '*'))
    print(np.mod(e, f))
    
    # 返回
    第一个数组:
    [10 20 30]
    第二个数组:
    [3 5 7]
    *****调用 mod 函数******
    [1 0 2]
    

    这里也需要注意数组必须具有相同的形状或符合数组广播规则。

    总结

    本文向大家介绍了 NumPy 的数学函数,包括三角函数、四舍五入函数和算术函数。这些函数在一些数据分析中比较常见,运用得好会使你事半功倍。

    参考

    https://numpy.org/devdocs/reference/routines.math.html

    文中示例代码:python-100-days

    关注公众号:python技术,回复"python"一起学习交流

  • 相关阅读:
    XDOJ1156: 等待队列
    XDOJ 1009: Josephus环的复仇
    cookie浏览器编写测试无效???
    express框架中cookie的使用
    JS设置Cookie过期时间
    CSS 伪元素
    art-template手动编写时间过滤器
    mongoose设置默认值、模块化及性能测试
    Mongoose: `findOneAndUpdate()` and `findOneAndDelete()` without the `useFindAndModify
    mongoose 联表查询之populate使用及注意事项
  • 原文地址:https://www.cnblogs.com/ityouknow/p/12993490.html
Copyright © 2011-2022 走看看