16. NumPy数学函数
1. 前言
NumPy 中包含了大量的数学函数,它们用于执行各种数学运算,其中包括三角函数、舍入函数等等。下面对它们做详细讲解。
2. 三角函数
NumPy 中提供了用于弧度计算的的 sin()(正弦)、cos()(余弦)和 tan()(正切)三角函数。
示例如下:
import numpy as np arr = np.array([0, 30, 60, 90, 120, 150, 180]) #计算arr数组中给定角度的三角函数值 #通过乘以np.pi/180将其转换为弧度 print(np.sin(arr * np.pi/180)) print(np.cos(arr * np.pi/180)) print(np.tan(arr * np.pi/180))
输出结果如下:
sin()正弦值: [0.00000000e+00 5.00000000e-01 8.66025404e-01 1.00000000e+00 8.66025404e-01 5.00000000e-01 1.22464680e-16] cos()余弦值: [ 1.00000000e+00 8.66025404e-01 5.00000000e-01 6.12323400e-17 -5.00000000e-01 -8.66025404e-01 -1.00000000e+00] tan()正切值: [ 0.00000000e+00 5.77350269e-01 1.73205081e+00 1.63312394e+16 -1.73205081e+00 -5.77350269e-01 -1.22464680e-16]
除了上述三角函数以外,NumPy 还提供了 arcsin,arcos 和 arctan 反三角函数。
若要想验证反三角函数的结果,可以通过 numpy.degrees() 将弧度转换为角度来实现,示例如下:
import numpy as np arr = np.array([0, 30, 60, 90]) #正弦值数组 sinval = np.sin(arr*np.pi/180) print(sinval) #计算角度反正弦,返回值以弧度为单位 cosec = np.arcsin(sinval) print(cosec) #通过degrees函数转化为角度进行验证 print(np.degrees(cosec)) #余弦值数组 cosval = np.cos(arr*np.pi/180) print(cosval) #计算反余弦值,以弧度为单位 sec = np.arccos(cosval) print(sec) #通过degrees函数转化为角度进行验证 print(np.degrees(sec)) #下面是tan()正切函数 tanval = np.tan(arr*np.pi/180) print(tanval) cot = np.arctan(tanval) print(cot) print(np.degrees(cot))
输出结果:
正选值数组: [0. 0.5 0.8660254 1. ] #计算角度反正弦值,以弧度为单位 [0. 0.52359878 1.04719755 1.57079633] 通过degrees验证 [ 0. 30. 60. 90.] 余弦数组: [1.00000000e+00 8.66025404e-01 5.00000000e-01 6.12323400e-17] 通过degrees验证 [0. 0.52359878 1.04719755 1.57079633] 反余弦值: [ 0. 30. 60. 90.] 正切数组: [0.00000000e+00 5.77350269e-01 1.73205081e+00 1.63312394e+16] 反正切值: [0. 0.52359878 1.04719755 1.57079633] 通过degrees验证 [ 0. 30. 60. 90.]
3. 舍入函数
NumPy 提供了三个舍入函数,介绍如下:
1) numpy.around()
该函数返回一个十进制值数,并将数值四舍五入到指定的小数位上。该函数的语法如下:
numpy.around(a,decimals)
参数说明:
- a:代表要输入的数组;
- decimals:要舍入到的小数位数。它的默认值为0,如果为负数,则小数点将移到整数左侧。
示例如下:
import numpy as np arr = np.array([12.202, 90.23120, 123.020, 23.202]) print(arr) print("数组值四舍五入到小数点后两位",np.around(arr, 2)) print("数组值四舍五入到小数点后-1位",np.around(arr, -1))
输出结果:
原数组arr:[12.202 90.2312 123.02 23.202] 数组值四舍五入到小数点后两位[12.2 90.23 123.02 23.2] 数组值四舍五入到小数点后-1位[10. 90. 120. 20.]
2) numpy.floor()
该函数表示对数组中的每个元素向下取整数,即返回不大于数组中每个元素值的最大整数。示例如下:
import numpy as np a = np.array([-1.8, 1.1, -0.4, 0.9, 18]) #对数组a向下取整 print (np.floor(a))
输出结果:
[-2. 1. -1. 0. 18.]
3) numpy.ceil()
该函数与 floor 函数相反,表示向上取整。示例如下:
import numpy as np a = np.array([-1.8, 1.1, -0.4, 0.9, 18]) #对数组a向上取整 print (np.ceil(a))
输出结果:
[-1. 2. -0. 1. 18.]