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与shell的3种交互方式介绍
Apr 11 Python
用Python计算三角函数之atan()方法的使用
May 15 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
Jun 16 Python
简单谈谈Python流程控制语句
Dec 04 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
python 将json数据提取转化为txt的方法
Oct 26 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
python如何制作缩略图
Apr 30 Python
基于matplotlib xticks用法详解
Apr 16 Python
Python基于time模块表示时间常用方法
Jun 18 Python
Python项目跨域问题解决方案
Jun 22 Python
python中Array和DataFrame相互转换的实例讲解
Feb 03 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 把数字转换成汉字的代码
2015/07/21 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
js实现京东秒杀倒计时功能
2019/01/21 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
python网络爬虫采集联想词示例
2014/02/11 Python
用Python实现KNN分类算法
2017/12/22 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
python如何编写win程序
2020/06/08 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
基于python实现坦克大战游戏
2020/10/27 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
高中生学习生活的自我评价
2013/10/09 职场文书
英文导游欢迎词
2014/01/11 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
二年级语文教学反思
2014/02/02 职场文书
病媒生物防治方案
2014/05/13 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
2015党建工作简报
2015/07/21 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python
java实现对Hadoop的操作
2021/07/01 Java/Android