在前面NumPy的学习过程当中,我们知道NumPy库是一个特别擅长处理大型矩阵或者说存储大型数据的这么一个
库,与Python自身相比较在处理数据的时候更加的高效,所以我们在数学中常见到的计算函数,NumPy库中基本上也都已经涵盖了。而且已经封装好了很多的函数,我们在实际的使用过程当中,只需要引入NumPy库,并调用相应的函数方法就可以了,非常的便捷。
这一节我们就先来了解了解NumPy中的数学函数。
我们在高中的时候,学习了很多的数学函数,诸如:三角函数,基本函数,指数函数,对数函数,复合函数,反函数等,看到这些函数名字是否能够想起来它们的运算过程呢?
比如三角函数的运算公式:sin, cos, tan 这三个的关系和运算方式是什么样的,其实对于我们这节的学习还是起到必要作用的。下面就简单的将这三者的关系做一个描述,以便为后面NumPy数学函数学习打个小基础,也唤醒唤醒之前沉睡的数学知识。
三角函数sin、cos、tan分别代表正弦、余弦和正切,它们是三角学中的基本函数
简单画一个图,方便理解:
下面我们大概写一个它们的计算公式,看图理解一目了然
正弦: s i n A = 对边 / 斜边 = a / c sinA = 对边/斜边 = a/c sinA=对边/斜边=a/c
余弦: c o s A = 邻边 / 斜边 = b / c cosA = 邻边/斜边 = b/c cosA=邻边/斜边=b/c
正切: t a n A = 对边 / 邻边 = a / b tanA = 对边/邻边 = a/b tanA=对边/邻边=a/b
三者关系: s i n 2 A + c o s 2 A = 1 sin²A + cos²A = 1 sin2A+cos2A=1 ; t a n A = s i n A / c o s A tanA = sinA/cosA tanA=sinA/cosA ;$ tanA × cosA = 1$
公式:
sinα = cos(90°-α)
cosα = sin(90°-α)
tanα = cot(90°-α)
Cotα = tan(90°-α)
以上就是我们之前学习的三角函数,此次复习是为了我们更好的去理解NumPy中封装好的数学公式,因为是已经封装好的,我们只管调用就行所以,之前学习的数学知识还得是回忆一下的。
NumPy 库给我们提供了标准的三角函数
我们先将NumPy提供的函数进行一个整理,然后在编辑器中进行验证。
函数名称 | 描述 |
---|---|
sin() | 正弦值 |
cos() | 余弦值 |
tan() | 正切值 |
arcsin() | 反正弦值 |
arccos() | 反余弦值 |
arctan() | 反正切值 |
三角函数示例代码:
"""
@Created on : 2024/5/15 11:09
@creator : er_nao
@File :numpy_22_数学函数.py
@Description :
"""
import numpy as np
a = np.array([0, 30, 45, 60, 90])
#我们通过np.pi将数字转换成角度的度数
# 那么np.pi是什么呢?我们稍后可以同时将它打印出来
# 我们先通过元素 乘 pi/180 转化为弧度
print('获取一维数组的正弦值')
print(np.sin(a*np.pi/180))
print('\n')
print('获取一维数组的余弦值')
print(np.cos(a*np.pi/180))
print('\n')
print('获取一维数组的正切值')
print(np.tan(a*np.pi/180))
print('\n')
print('打印np.pi')
print(np.pi)
#输出结果
# 获取一维数组的正弦值
# [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]
#
#
# 打印np.pi(我们可以看到,np.pi打印出来就是我们数学中的π,
# 刚好numpy提供的和数学中的一样,就是数字转度数的公式)
# 3.141592653589793
反三角函数示例代码:
import numpy as np
# 上面我们计算出了三角函数值,现在我们计算根据值进行反三角函数的运算
print('反三角函数值')
sin_inv_arr = np.arcsin(sin_arr)
cos_inv_arr = np.arccos(cos_arr)
tan_inv_arr = np.arctan(tan_arr)
print('\n')
print('反正弦函数')
print(sin_inv_arr)
print('\n')
print('反余弦函数')
print(cos_inv_arr)
print('\n')
print('反正切弦函数')
print(tan_inv_arr)
#再次使用转换函数将其进行转化来进行验证
# 我们使用 degrees()这个方法
print('\n')
print('反正弦:')
print(np.degrees(sin_inv_arr))
print('\n')
print('反余弦:')
print(np.degrees(cos_inv_arr))
print('\n')
print('反正切:')
print(np.degrees(tan_inv_arr))
#输出结果
# 反正弦函数
# [0. 0.52359878 0.78539816 1.04719755 1.57079633]
#
#
# 反余弦函数
# [0. 0.52359878 0.78539816 1.04719755 1.57079633]
#
#
# 反正切弦函数
# [0. 0.52359878 0.78539816 1.04719755 1.57079633]
#
#
# 反正弦:
# [ 0. 30. 45. 60. 90.]
#
#
# 反余弦:
# [ 0. 30. 45. 60. 90.]
#
#
# 反正切:
# [ 0. 30. 45. 60. 90.]
概念:
我们再看一个函数概念,舍入函数。什么叫做舍入函数呢?顾名思义就是指将数组的返回值进行四舍五入,可以看到我们上面的三角函数的返回值都是很长的,这个看着也不美观。
我们先来看看舍入函数的写法格式:numpy.around(a,decimals),其中有两个参数,第一个参数a就是我们要进行四舍五入的数组,第二个参数代表我们要舍入的小数位数,也就是要保留几位小数,默认值是0,如果为负数,那么将舍入到小数点左侧的位置。
示例代码:
x = np.array([8, 5.55, 0.15926, 18.878, 4.4])
# x = np.array([1, 2.0, 30.12, 129.567])
print('原数组形式')
print(x)
print('\n')
# 调用around()函数开始进行四舍五入
# 我们分别将舍入的几种形式都进行测试
print('不写decimals')
print(np.around(x))
print('\n')
print('写decimals=1')
print(np.around(x, decimals=1))
print('\n')
print('写decimals=-1')
print(np.around(x, decimals=-1))
print('\n')
# 输出结果:
# 不写decimals
# [ 8. 6. 0. 19. 4.]
#
#
# 写decimals=1
# [ 8. 5.6 0.2 18.9 4.4]
#
#
# 写decimals=-1
# [10. 10. 0. 20. 0.]
不知道大家有没有注意到,当decimals=-1的时候,控制台打印出来值似乎看的有些不明白,
比如: np.around(5.55, decimals=-1) 的值为什么是10,而不是6呢?
再比如:np.around(4.12, decimals=-1)的值为什么是0.0,而不是4呢?
如果对此处也有疑问的话,请移步动到这篇文章:numpy.around()函数详解
接下来我们再看 numpy.floor()函数和 numpy.ceil()函数。
numpy.floor() 返回小于或者等于指定表达式的最大整数,即向下取整。
numpy.ceil() 返回大于或者等于指定表达式的最小整数,即向上取整。
floor()函数示例代码:
x = np.array([8, 5.55, 0.15926, 18])
print(np.floor(x))
# 输出结果
# [ 8. 5. 0. 18.]
ceil()函数示例代码:
x = np.array([8, 5.55, 0.15926, 18])
print(np.ceil(x))
# 输出结果
# [ 8. 6. 1. 18.]
本文提供的内容仅用于个人学习、研究,如有相关权利人的合法权利,请及时通知作者,予以删除!