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可跨平台实现获取按键的方法
Mar 05 Python
Python运用于数据分析的简单教程
Mar 27 Python
Python中的index()方法使用教程
May 18 Python
Python自定义简单图轴简单实例
Jan 08 Python
Python开启线程,在函数中开线程的实例
Feb 22 Python
Python编程实现tail-n查看日志文件的方法
Jul 08 Python
解决TensorFlow GPU版出现OOM错误的问题
Feb 03 Python
python 使用建议与技巧分享(四)
Aug 18 Python
Python Map 函数的使用
Aug 28 Python
Python爬虫之Selenium实现关闭浏览器
Dec 04 Python
利用python+request通过接口实现人员通行记录上传功能
Jan 13 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 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
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
jQuery 遍历json数组的实现代码
2020/09/22 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
javascript实现信息增删改查的方法
2015/07/25 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
Python连接phoenix的方法示例
2017/09/29 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
python实现中文文本分句的例子
2019/07/15 Python
Python hashlib模块加密过程解析
2019/11/05 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
Python数组并集交集补集代码实例
2020/02/18 Python
Python实现捕获异常发生的文件和具体行数
2020/04/25 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
Python库安装速度过慢解决方案
2020/07/14 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
英国现代市场:ARKET
2019/04/10 全球购物
2014年学校法制宣传日活动总结
2014/11/01 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
土建技术员岗位职责
2015/04/11 职场文书