NumPy 数学函数及代数运算的实现代码


Posted in Python onJuly 18, 2018

一、实验介绍

1.1 实验内容

如果你使用 Python 语言进行科学计算,那么一定会接触到NumPy。NumPy 是支持 Python 语言的数值计算扩充库,其拥有强大的多维数组处理与矩阵运算能力。除此之外,NumPy 还内建了大量的函数,方便你快速构建数学模型。

1.2 实验知识点

  • NumPy 安装
  • NumPy 数值类型介绍

1.3 实验环境

  • Python3
  • Jupyter Notebook

1.4 适合人群

本课程难度为一般,属于初级级别课程,适合具有 Python 基础,并对使用 NumPy 进行科学计算感兴趣的用户。

二、数学函数

使用 python 自带的运算符,你可以完成数学中的加减乘除,以及取余、取整,幂次计算等。导入自带的 math 模块之后,里面又包含绝对值、阶乘、开平方等一些常用的数学函数。不过,这些函数仍然相对基础。如果要完成更加复杂一些的数学计算,就会显得捉襟见肘了。

numpy 为我们提供了更多的数学函数,以帮助我们更好地完成一些数值计算。下面就依次来看一看。

2.1 三角函数

首先, 看一看 numpy 提供的三角函数功能。这些方法有:

numpy.sin(x)
numpy.cos(x)
numpy.tan(x)
numpy.arcsin(x)
numpy.arccos(x)
numpy.arctan(x)
numpy.hypot(x1,x2)
numpy.degrees(x)
numpy.radians(x)
numpy.deg2rad(x)
numpy.rad2deg(x)

比如,我们可以用上面提到的 numpy.rad2deg(x) 将弧度转换为度。

示例代码:

import numpy as np

np.rad2deg(np.pi)

2.2 双曲函数

在数学中,双曲函数是一类与常见的三角函数类似的函数。双曲函数经常出现于某些重要的线性微分方程的解中,使用 numpy 计算它们的方法为:

numpy.sinh(x)
numpy.cosh(x)
numpy.tanh(x)
numpy.arcsinh(x)
numpy.arccosh(x)
numpy.arctanh(x)

2.3 数值修约

数值修约, 又称数字修约, 是指在进行具体的数字运算前, 按照一定的规则确定一致的位数, 然后舍去某些数字后面多余的尾数的过程[via. 维基百科]。比如, 我们常听到的「4 舍 5 入」就属于数值修约中的一种。

numpy.around(a)
numpy.round_(a)
numpy.rint(x)
numpy.fix(x, y)
numpy.floor(x)
numpy.ceil(x)
numpy.trunc(x)

随机选择几个浮点数,看一看上面方法的区别。

2.4 求和、求积、差分

下面这些方法用于数组内元素或数组间进行求和、求积以及进行差分。

numpy.prod(a, axis, dtype, keepdims)
numpy.sum(a, axis, dtype, keepdims)
numpy.nanprod(a, axis, dtype, keepdims)
numpy.nansum(a, axis, dtype, keepdims)
numpy.cumprod(a, axis, dtype)
numpy.cumsum(a, axis, dtype)
numpy.nancumprod(a, axis, dtype)
numpy.nancumsum(a, axis, dtype)
numpy.diff(a, n, axis)
numpy.ediff1d(ary, to_end, to_begin)
numpy.gradient(f)
numpy.cross(a, b, axisa, axisb, axisc, axis)
numpy.trapz(y, x, dx, axis)

2.5 指数和对数

如果你需要进行指数或者对数求解,可以用到以下这些方法。

numpy.exp(x) :计算输入数组中所有元素的指数。
numpy.expm1(x) :对数组中的所有元素计算 exp(x) - 1.
numpy.exp2(x) :对于输入数组中的所有 p, 计算 2 ** p。
numpy.log(x) :计算自然对数。
numpy.log10(x) :计算常用对数。
numpy.log2(x) :计算二进制对数。
numpy.log1p(x) : log(1 + x) 。
numpy.logaddexp(x1, x2) : log2(2**x1 + 2**x2) 。
numpy.logaddexp2(x1, x2) : log(exp(x1) + exp(x2)) 。

2.6 算术运算

当然,numpy 也提供了一些用于算术运算的方法,使用起来会比 python 提供的运算符灵活一些,主要是可以直接针对数组。

numpy.add(x1, x2)
numpy.reciprocal(x)
numpy.negative(x)
numpy.multiply(x1, x2)
numpy.divide(x1, x2)
numpy.power(x1, x2)
numpy.subtract(x1, x2)
numpy.fmod(x1, x2)
numpy.mod(x1, x2)
numpy.modf(x1)
numpy.remainder(x1, x2)

2.7 矩阵和向量积

求解向量、矩阵、张量的点积等同样是 numpy 非常强大的地方。

numpy.dot(a,b)
numpy.vdot(a,b)
numpy.inner(a,b)
numpy.outer(a,b)
numpy.matmul(a,b)
numpy.tensordot(a,b)
numpy.kron(a,b)

2.8 其他

除了上面这些归好类别的方法,numpy 中还有一些用于数学运算的方法,归纳如下:

numpy.angle(z, deg)
numpy.real(val)
numpy.imag(val)
numpy.conj(x)
numpy.convolve(a, v, mode)
numpy.sqrt(x)
numpy.cbrt(x)
numpy.square(x)
numpy.absolute(x)
numpy.fabs(x)
numpy.sign(x)
numpy.maximum(x1, x2)
numpy.minimum(x1, x2)
numpy.nan_to_num(x)
numpy.interp(x, xp, fp, left, right, period)

三、代数运算

上面,我们分为 8 个类别,介绍了 numpy 中常用到的数学函数。这些方法让复杂的计算过程表达更为简单。除此之外,numpy 中还包含一些代数运算的方法,尤其是涉及到矩阵的计算方法,求解特征值、特征向量、逆矩阵等,非常方便。

numpy.linalg.cholesky(a)
numpy.linalg.qr(a ,mode)
numpy.linalg.svd(a ,full_matrices,compute_uv)
numpy.linalg.eig(a)
numpy.linalg.eigh(a, UPLO)
numpy.linalg.eigvals(a)
numpy.linalg.eigvalsh(a, UPLO)
numpy.linalg.norm(x ,ord,axis,keepdims)
numpy.linalg.cond(x ,p)
numpy.linalg.det(a)
numpy.linalg.matrix_rank(M ,tol)
numpy.linalg.slogdet(a)
numpy.trace(a ,offset,axis1,axis2,dtype,out)
numpy.linalg.solve(a,b)
numpy.linalg.tensorsolve(a,b ,axes)
numpy.linalg.lstsq(a,b ,rcond)
numpy.linalg.inv(a)
numpy.linalg.pinv(a ,rcond)
numpy.linalg.tensorinv(a ,ind)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的解析crontab配置文件代码
Jun 30 Python
python自动化测试之从命令行运行测试用例with verbosity
Sep 28 Python
Python文件和流(实例讲解)
Sep 12 Python
python基础学习之如何对元组各个元素进行命名详解
Jul 12 Python
python判断列表的连续数字范围并分块的方法
Nov 16 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
python变量的存储原理详解
Jul 10 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
python下载库的步骤方法
Oct 12 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
Jun 29 Python
Python requests接口测试实现代码
Sep 08 Python
Django 用户认证Auth组件的使用
Nov 30 Python
Sanic框架应用部署方法详解
Jul 18 #Python
Python Web编程之WSGI协议简介
Jul 18 #Python
使用 Python 实现文件递归遍历的三种方式
Jul 18 #Python
详解flask入门模板引擎
Jul 18 #Python
Sanic框架基于类的视图用法示例
Jul 18 #Python
flask入门之表单的实现
Jul 18 #Python
Flask入门之上传文件到服务器的方法示例
Jul 18 #Python
You might like
php 小乘法表实现代码
2009/07/16 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
javascript的内存管理详解
2013/08/07 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
学习使用bootstrap的modal和carousel
2016/12/09 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
布同 统计英文单词的个数的python代码
2011/03/13 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
python识别验证码的思路及解决方案
2020/09/13 Python
澳大利亚领先的在线美容商店:Facial Co
2017/10/22 全球购物
中国梦演讲稿教师篇
2014/04/23 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
运动会开幕式致辞
2015/07/29 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
实操Python爬取觅知网素材图片示例
2021/11/27 Python
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript