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 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 Python
Python脚本实现虾米网签到功能
Apr 12 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
python实现汽车管理系统
Nov 30 Python
详解Python循环作用域与闭包
Mar 21 Python
利用Django模版生成树状结构实例代码
May 19 Python
Python list运算操作代码实例解析
Jan 20 Python
基于pygame实现童年掌机打砖块游戏
Feb 25 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
Apr 10 Python
python+adb+monkey实现Rom稳定性测试详解
Apr 23 Python
Python与C/C++的相互调用案例
Mar 04 Python
实战Python爬虫爬取酷我音乐
Apr 11 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
PHP 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
fromCharCode和charCodeAt 方法
2006/12/27 Javascript
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
ElementUI Tag组件实现多标签生成的方法示例
2019/07/08 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
highcharts.js数据绑定方式代码实例
2019/11/13 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
vue element实现表格合并行数据
2020/11/30 Vue.js
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
CSS3 简写animation
2012/05/10 HTML / CSS
提高EJB性能都有哪些技巧
2012/03/25 面试题
硕士研究生自我鉴定
2013/11/08 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
爱祖国演讲稿
2014/05/04 职场文书
基层组织建设年活动总结
2015/05/09 职场文书