第 84 天:NumPy 数学函数

简介: 第 84 天:NumPy 数学函数

本文向大家介绍 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('\n')
print(np.char.center('不同角度的余弦值', 30, '*'))# 通过乘 pi/180 转化为弧度cos = np.cos(a*np.pi/180)print(cos)print('\n')
print(np.char.center('不同角度的正切值', 30, '*'))# 通过乘 pi/180 转化为弧度tan = np.tan(a*np.pi/180)print(tan)print('\n')
print(np.char.center('不同角度的反正弦值', 30, '*'))arcsin = np.arcsin(sin)# 将弧度转换成角度打印输出print(np.degrees(arcsin))print('\n')
print(np.char.center('不同角度的反余弦值', 30, '*'))arccos = np.arccos(cos)# 将弧度转换成角度打印输出print(np.degrees(arccos))print('\n')
print(np.char.center('不同角度的反正切值', 30, '*'))arctan = np.arctan(tan)# 将弧度转换成角度打印输出print(np.degrees(arctan))print('\n')
# 返回***********不同角度的正弦值***********[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('\n')
print(np.char.center('两个数组相加', 20, '*'))print(np.add(a, b))print('\n')
print(np.char.center('两个数组相减', 20, '*'))print(np.subtract(a, b))print('\n')
print(np.char.center('两个数组相乘', 20, '*'))print('两个数组相乘:')print(np.multiply(a, b))print('\n')
print(np.char.center('两个数组相除', 20, '*'))print(np.divide(a, b))print('\n')
# 返回第一个数组:[[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('\n')
print(np.char.center('调用 power 函数', 20, '*'))print(np.power(c, 2))print('\n')
d = np.array([1, 2, 3])print('第二个数组是:')print(d)print('\n')
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('\n')
print('第二个数组:')print(f)print('\n')
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

目录
相关文章
|
3月前
|
Python
NumPy 教程 之 NumPy 统计函数 9
NumPy提供了多种统计函数,如计算数组中的最小值、最大值、百分位数、标准差及方差等。其中,标准差是一种衡量数据平均值分散程度的指标,它是方差的算术平方根。例如,对于数组[1,2,3,4],其标准差可通过计算各值与均值2.5的差的平方的平均数的平方根得出,结果为1.1180339887498949。示例代码如下: ```python import numpy as np print(np.std([1,2,3,4])) ``` 运行输出即为:1.1180339887498949。
124 50
|
3月前
|
Python
NumPy 教程 之 NumPy 统计函数 10
NumPy统计函数,包括查找数组中的最小值、最大值、百分位数、标准差和方差等。方差表示样本值与平均值之差的平方的平均数,而标准差则是方差的平方根。例如,`np.var([1,2,3,4])` 的方差为 1.25。
102 48
|
2月前
|
Python
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
NumPy库中的`np.concatenate`和`np.append`函数,它们分别用于沿指定轴拼接多个数组以及在指定轴上追加数组元素。
30 0
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
|
3月前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 8
NumPy提供了多种排序方法,包括快速排序、归并排序及堆排序,各有不同的速度、最坏情况性能、工作空间和稳定性特点。此外,NumPy还提供了`numpy.extract()`函数,可以根据特定条件从数组中抽取元素。例如,在一个3x3数组中,通过定义条件选择偶数元素,并使用该函数提取这些元素。示例输出为:[0., 2., 4., 6., 8.]。
27 8
|
3月前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 5
NumPy中的排序方法及特性对比,包括快速排序、归并排序与堆排序的速度、最坏情况性能、工作空间及稳定性分析。并通过`numpy.argmax()`与`numpy.argmin()`函数演示了如何获取数组中最大值和最小值的索引,涵盖不同轴方向的操作,并提供了具体实例与输出结果,便于理解与实践。
26 5
|
3月前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 2
介绍NumPy` 中的排序方法与条件筛选函数。通过对比快速排序、归并排序及堆排序的速度、最坏情况性能、工作空间需求和稳定性,帮助读者选择合适的排序算法。此外,还深入讲解了 `numpy.argsort()` 的使用方法,并通过具体实例展示了如何利用该函数获取数组值从小到大的索引值,并据此重构原数组,使得其变为有序状态。对于学习 `NumPy` 排序功能来说,本教程提供了清晰且实用的指导。
36 7
|
3月前
|
算法 索引 Python
Numpy 的一些以 arg 开头的函数
Numpy 的一些以 arg 开头的函数
43 0
|
4月前
|
索引 Python
NumPy 教程 之 NumPy 统计函数 8
这段内容介绍了 NumPy 中的 `numpy.average()` 函数,该函数用于计算数组中元素的加权平均值。可以通过设置 `axis` 参数指定计算的轴,`weights` 参数用于指定权重,默认为等权重。示例展示了如何在一维和多维数组中使用此函数,并通过 `returned=True` 返回加权平均值和权重总和。
28 1
|
4月前
|
存储 索引 Python
NumPy 教程 之 NumPy 统计函数 6
这段内容介绍了 NumPy 中的 `numpy.mean()` 函数,该函数用于计算数组元素的算术平均值。通过设置 `axis` 参数,可以在不同轴上计算平均值。示例展示了如何对一个二维数组进行整体及按行、列计算平均值的过程及其结果。
39 2
|
3月前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 4
NumPy提供了多种排序方法,包括快速排序、归并排序及堆排序等,具有不同的执行速度、最坏情况性能、工作空间需求及稳定性特征。教程涵盖了`msort`、`sort_complex`、`partition`和`argpartition`等函数的使用方法,并通过实例展示了复数排序与分区排序的应用。例如,`np.sort_complex()`用于复数排序,`np.partition()`实现基于指定位置的分区排序,而`argpartition()`则帮助快速找到数组中的特定值。
15 0