首页 > 编程笔记

Numpy常用数学计算函数

Numpy 提供了常用的数学计算函数,通过这些函数我们可以进行三角函数的运算,指数和对数的运算,以及其他基本的数学运算。相比 Python 自带的 Math 库,Numpy 中数学函数最大的优势是可以对序列和数组进行操作。

1. 三角函数

下面主要列举常用的正弦、余弦和正切函数,以及角度和弧度的转换函数。Numpy 中的这些函数都可以传入列表类型的参数,自动对列表中的各个元素进行计算,不需要写循环。示例代码如下。

In [1]: import numpy as np 

首先,用 linspace 函数生成一个范围在0到π的等间距的 11 个数,然后调用sin函数计算它的正弦值。同理,还可以计算它们的余弦函数和正切函数。
In [2]: np.sin(np.linspace(0,np.pi,11))  # 正弦函数
Out[2]: 
array([0.00000000e+00, 3.09016994e-01, 5.87785252e-01, 8.09016994e-01,
       9.51056516e-01, 1.00000000e+00, 9.51056516e-01, 8.09016994e-01, 
       9.51056516e-01, 1.00000000e+00, 9.51056516e-01, 8.09016994e-01,
       5.87785252e-01, 3.09016994e-01, 1.22464680e-16])
In [3]: np.cos(np.linspace(0,np.pi,11))  # 余弦函数
Out[3]: 
array([ 1.00000000e+00,  9.51056516e-01,  8.09016994e-01,  5.87785252e-01,
        3.09016994e-01,  6.12323400e-17, -3.09016994e-01, -5.87785252e-01,
       -8.09016994e-01, -9.51056516e-01, -1.00000000e+00])
In [4]: np.tan(np.linspace(0,np.pi,11))  # 正切函数
Out[4]: 
array([ 0.00000000e+00,  3.24919696e-01,  7.26542528e-01,  1.37638192e+00,
        3.07768354e+00,  1.63312394e+16, -3.07768354e+00, -1.37638192e+00,
       -7.26542528e-01, -3.24919696e-01, -1.22464680e-16])
arcsin 是 sin 函数的反函数,该函数是将正弦值转换为弧度。我们还可以计算反余弦函数和反正切函数。
In [5]: np.arcsin(np.linspace(0,1,11))  # 反正弦函数
Out[5]: 
array([0.        , 0.10016742, 0.20135792, 0.30469265, 0.41151685,
       0.52359878, 0.64350111, 0.7753975 , 0.92729522, 1.11976951,
       1.57079633])
In [6]: np.arccos(np.linspace(0,1,11))  # 反余弦函数
Out[6]: 
array([1.57079633, 1.47062891, 1.36943841, 1.26610367, 1.15927948,
       1.04719755, 0.92729522, 0.79539883, 0.64350111, 0.45102681,
       0.        ])
In [7]: np.arctan(np.linspace(0,1,11))  # 反正切函数
Out[7]: 
array([0.        , 0.09966865, 0.19739556, 0.29145679, 0.38050638,
       0.46364761, 0.5404195 , 0.61072596, 0.67474094, 0.7328151 ,
       0.78539816]) 
Numpy 中还提供了弧度和角度的转换函数。degrees 方法是将弧度转换为角度,radians 方法是将角度转换为弧度。
In [8]: np.degrees([np.pi,np.pi/2])  # 弧度转角度
Out[8]: array([180.,  90.])
In [9]: np.radians([180,90])  # 角度转弧度
Out[9]: array([3.14159265, 1.57079633]) 

2. 指数与对数

Numpy 中同样提供的指数与对数运算函数。需要注意的是,在计算指数时只提供以自然常数和 2 为底的方法,而在计算对数时只提供以自然常数、2 和 10 为底的方法。示例代码如下。
In [1]: import numpy as np
In [2]: np.exp([1,2,3,4,5])  # 自然常数e的指数值
Out[2]: 
array([  2.71828183,   7.3890561 ,  20.08553692,  54.59815003,
       148.4131591 ])
In [3]: np.exp2([1,2,3,4,5])  # 计算2的指数值
Out[3]: array([ 2.,  4.,  8., 16., 32.])
In [4]: np.log([1, np.e,])  # 计算以自然常数为底的对数
Out[4]: array([0., 1.])
In [5]: np.log2([1, np.e,])  # 计算以2为底的对数
Out[5]: array([0.        , 1.44269504])
In [6]: np.log10([1, np.e,])  # 计算以10为底的对数
Out[6]: array([0.        , 0.43429448]) 

3. 约数

Numpy 中求约数的方法。约数包括四舍五入、向 0 取整、向上取整和向下取整。示例代码如下。
In [1]: import numpy as np
In [2]: np.around([0.3, 1.7])   # 四舍五入
Out[2]: array([0., 2.])
In [3]: np.rint([-0.2,1.1])  # 四舍五入并保留整数部分
Out[3]: array([-0.,  1.])
In [4]: np.fix([-1.6,1.7,1.2])  # 向0取整
Out[4]: array([-1.,  1.,  1.])
In [5]: np.floor([-1.6,1.7,1.2])  # 向下取整
Out[5]: array([-2.,  1.,  1.])
In [6]: np.ceil([-1.6,1.7,1.2])  # 向上取整
Out[6]: array([-1.,  2.,  2.]) 

优秀文章