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入门教程
Feb 08 Python
Python删除指定目录下过期文件的2个脚本分享
Apr 10 Python
Python实现动态加载模块、类、函数的方法分析
Jul 18 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
Python minidom模块用法示例【DOM写入和解析XML】
Mar 25 Python
python 3.6.7实现端口扫描器
Sep 04 Python
python使用PIL剪切和拼接图片
Mar 23 Python
Python命名空间及作用域原理实例解析
Aug 12 Python
理解Django 中Call Stack机制的小Demo
Sep 01 Python
python 解决pycharm运行py文件只有unittest选项的问题
Sep 01 Python
pytorch中的numel函数用法说明
May 13 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 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
收音机的保养
2021/03/01 无线电
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
Python实现的计算马氏距离算法示例
2018/04/03 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
客服服务心得体会
2013/12/30 职场文书
库房主管岗位职责
2013/12/31 职场文书
关于运动会的稿件
2014/02/02 职场文书
《童趣》教学反思
2014/02/19 职场文书
党校毕业心得体会
2014/09/13 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/10/28 职场文书
西安大雁塔导游词
2015/02/10 职场文书
休学证明范本
2015/06/19 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
编写python程序的90条建议
2021/04/14 Python