当前位置:首页 > 技术分析 > 正文内容

NumPy 数学函数

ruisui883个月前 (03-05)技术分析17

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

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/2497.html

标签: degrees函数
分享给朋友:

“NumPy 数学函数” 的相关文章

Java教程:gitlab-使用入门

1 导读本教程主要讲解了GitLab在项目的环境搭建和基本的使用,可以帮助大家在企业中能够自主搭建GitLab服务,并且可以GitLab中的组、权限、项目自主操作GitLab简介GitLab环境搭建GitLab基本使用(组、权限、用户、项目)2 GitLab简介GitLab是整个DevOps生命周期...

你感动了吗?佳能超规格镜头 RF 24-105mm F2.8深度测评

如果要你选一支用作多题材创作的挂机镜头,那我相信很多人会选择24-105mm这个焦段的镜头。作为一支可以实现从广角到长焦的变焦镜头,24-105mm有着丰富的焦段选择。只是基于镜头体积以及光学结构上的限制,此前的24-105mm镜头只能恒定在F4的光圈。而佳能打破了这一限制,将实用焦段和恒定光圈完美...

一起学Vue:路由(vue-router)

前言学习vue-router就要先了解路由是什么?前端路由的实现原理?vue-router如何使用?等等这些问题,就是本篇要探讨的主要问题。vue-router是什么路由是什么?大概有两种说法:从路由的用途上来解释路由就是指随着浏览器地址栏的变化,展示给用户的页面也不相同。从路由的实现原理上来解释路...

一套代码,多端运行——使用Vue3开发兼容多平台的小程序

介绍Vue3发布已经有一段时间了,从目前来看,其生态还算可以,也已经有了各种组件库给予了支持,但是不管是Vue3还是Vue2都无法直接用来开发小程序,因此国内一些技术团队针对Vue开发了一些多端兼容运行的开发框架,今天来体验一下使用Taro来体验一下使用Vue3开发多平台运行的小程序,以便于兼容各大...

uni-app基于vue开发小程序与标准vue开发新增点

1、路由跳转传参uni.navigateTo({ url: `/pages/transition/spreadTextAction?t=${this.options.t}&rt=${this.options.rt}&l=${this.options.l}`});uni.navigateBack({...

千智云低代码平台 v2.0.6发布「平台升级」

【平台简介】千智云低代码应用平台是一款低代码开发+低代码PaaS+SaaS应用中台为一体的应用平台。平台提供了多种应用场景功能及应用组件,满足各种应用的基本实现,可以使用低代码开发的方式,定制化的开发软件项目,并使用平台提供的各种功能,提供了大多数业务场景的支持。也可以将开发的应用发布到平台,成为S...