NumPy 数学函数及代数运算详解
本文详细介绍 NumPy 库中丰富的数学函数与代数运算方法。内容涵盖三角函数、双曲函数、数值修约、指数对数及算术运算等基础数学工具,并深入讲解矩阵与向量积、特征值求解、逆矩阵计算等高级代数运算。通过具体代码示例,帮助开发者高效利用 NumPy 进行科学计算与数据分析。
一、实验介绍
1.1 实验内容
在 Python 语言中进行科学计算时,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. 维基百科]。例如,我们熟知的“四舍五入”即属于数值修约的一种。
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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













