侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

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

Python  /  管理员 发布于 5年前   332

一、实验介绍

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 npnp.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)

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


  • 上一条:
    对pycharm代码整体左移和右移缩进快捷键的介绍
    下一条:
    PyCharm设置SSH远程调试的方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客