SciPy 子包2025年3月17日 | 阅读11分钟 在接下来的教程中,我们将学习 SciPy 包的子包。 什么是 SciPy?SciPy 是一个开源的 Python 包,用于处理数学和科学问题。它基于 NumPy 扩展,并提供了大量用于数据处理和可视化的高级命令。由于 SciPy 依赖于 NumPy,如前所述,如果导入 SciPy,则无需单独导入 NumPy。 SciPy 与 NumPyNumPy 和 SciPy 是用于数学和数值分析的两个 Python 库。NumPy 包含数组数据和基本操作(如排序和索引),而 SciPy 包含所有数值代码。虽然 NumPy 包含一些处理线性代数、傅里叶变换等问题的函数,但 SciPy 提供了这些功能以及更多功能的完整版本。然而,由于 SciPy 构建在 NumPy 之上,如果您在科学分析中使用 Python,则需要同时安装 NumPy 和 SciPy。 理解 SciPy 子包下表列出了 SciPy 为不同科学计算提供的几个子包。
在使用这些包之前,必须先导入它们。 例如 在深入探讨每个函数的详细信息之前,我们先来了解一下 SciPy 和 NumPy 共享的基本函数。 基本函数与 NumPy 的交互由于 SciPy 基于 NumPy,您可以使用 NumPy 的函数来处理数组。您可以使用 help()、info() 或 source() 函数来详细了解这些函数。 help (): help() 函数可用于获取任何函数的有关信息。此函数有两种使用方式:
执行上述代码后,第一个 help() 函数将返回有关 cluster 子模块的信息。当用户需要查找信息时,第二个 help() 函数会提示用户输入任何模块、关键字等名称。只需键入“quit”并按 Enter 键即可停止此函数。此函数返回所需的模块、函数等的详细信息。 info() 有关所需的模块、函数等的详细信息将从此函数返回。 source() 仅针对 Python 编写的对象,返回源代码。如果方法或对象是用其他语言(如 C)编写的,此函数不会产生任何相关信息。但如果您想使用此函数,可以按照以下方式使用: 特殊函数SciPy 提供了许多特殊函数,包括椭圆函数、方便函数、伽马函数、贝塔函数等,这些函数在数学物理中都有应用。如前所述,您可以使用 help() 函数来查找每个函数。 三角函数和指数函数您可以使用 SciPy 特殊函数包中的各种函数来解决三角学问题和确定指数。 请看以下示例 示例 输出 10000.0 32.0 0.8660254037844387 0.8660254037844387 您可以尝试使用 SciPy 特殊函数包中的各种其他函数。 积分函数SciPy 提供了许多用于求解积分的函数。SciPy 是一系列例程,用于解决各种积分问题,从应用梯形法则计算积分到使用常微分方程积分器。 通用积分为了确定单变量函数的积分,SiPy 有一个名为 quad 的函数。要表示无限积分限,可以将积分限表示为 ()。quad() 函数的语法如下: 示例 输出 (3.3425766251762377, 3.711005530844511e-14) 双重积分函数SciPy 的 dblquad 函数可用于计算双重积分。我们都知道双重积分由两个实变量组成。除了决定积分限和 dy 和 dx 函数的另外四个变量外,要积分的函数将作为参数传递给 dblquad() 函数。 示例 输出 Result of double integration: (46.16666666666667, 5.835718000044804e-13) 您可以更深入地了解 SciPy 提供的用于计算三重积分、n 重积分、Romberg 积分等的各种其他函数。使用 help 函数可发现有关必要函数的所有信息。 优化函数通过 scipy.optimize 的帮助函数,可以使用几种流行的优化技术。 本质上,它包括以下内容:
示例 输出 [ 2.00002132 -3.00000234 1.00004083 3.99995615 -2.00002776] 插值函数在数值分析的背景下,插值是创建现有数据点集合内的新数据点的过程。SciPy 库的 scipy.interpolate 子包包含样条函数和类、一维和多维(单变量和多变量)插值类以及其他组件。 单变量插值本质上,单变量插值是曲线拟合的一个分支,它确定最适合二维数据点集的曲线。SciPy 提供的 interp1d 函数可用于生成单变量插值。 示例 输出 ![]() 多变量插值多变量插值,也称为空间插值,是一种对具有多个变量的函数进行插值的方法。 示例 输出 ![]() 傅里叶变换函数从周期分量中恢复信号并将函数定义为这些分量的总和的过程称为傅里叶分析。可以使用 fft 函数获取实数或复数序列的离散傅里叶变换。 示例 输出 [22.-0.j -2.+2.j -2.-0.j -2.-2.j] 同样,您可以使用 ifft 函数查找此函数的逆,如下所示: 示例 输出 Original Data: [ 3 5 7 9 11] FFT Result: [35.-0.j -5.+6.8819096j -5.+1.62459848j -5.-1.62459848j -5.-6.8819096j ] IFFT Result: [ 3.+0.j 5.+0.j 7.+0.j 9.+0.j 11.+0.j] 信号处理函数分析、修改和合成信号(如音乐、图像等)称为信号处理。SciPy 提供的一些函数可用于设计、滤波和插值一维和二维数据。 过滤本质上,滤波信号可以消除其中不需要的元素。order_filter 函数可用于执行有序滤波。本质上,此函数以有序方式过滤数组。此函数的作用如下: 语法 示例 输出 Original Data: [[ 0 1 2 3 4 5] [ 6 7 8 9 10 11] [12 13 14 15 16 17] [18 19 20 21 22 23] [24 25 26 27 28 29] [30 31 32 33 34 35] [36 37 38 39 40 41] [42 43 44 45 46 47]] Filtered Data: [[ 0 1 2 3 4 0] [ 1 7 8 9 10 4] [ 7 13 14 15 16 10] [13 19 20 21 22 16] [19 25 26 27 28 22] [25 31 32 33 34 28] [31 37 38 39 40 34] [ 0 36 37 38 39 0]] 波形此外,scipy.signal 子包还有许多用于生成波形的函数。Chirp 是其中一个函数。此函数是频率扫描余弦发生器,其语法如下: 语法 示例 输出 ![]() 线性代数向量空间和矩阵用于表示线性方程。基于 ATLAS LAPACK 和 BLAS 库,SciPy 以极快的速度求解线性代数问题。除了 numpy.linalg 中的所有功能外,scipy.linalg 还提供了一些更高级的功能。此外,如果 numpy.linalg 未与 ATLAS LAPACK 和 BLAS 支持一起使用,scipy.linalg 比 numpy.linalg 更快。 求矩阵的逆在数学中,矩阵 A 的逆是矩阵 B,其中单位矩阵(用符号 B=A-1 表示)在主对角线上由 1 组成。SciPy 中的 linalg.inv 方法可用于检索此逆。 示例 输出 [[ 0.375 -0.4375] [-0.125 0.3125]] 求行列式方阵的行列式是根据矩阵系数算术计算得到的值。这可以在 SciPy 中通过使用 det 函数来完成,该函数的作用如下: 语法 示例 输出 15.999999999999993 稀疏特征值与线性方程相关的一组特殊标量称为特征值。 eigh() 函数用于解决复数厄米矩阵或实对称矩阵的广义特征值问题。 示例 输出 Computed Eigenvalues: [ 1.52121087 3.75828553 4.4066154 16.3138882 ] Corresponding Eigenvectors: [[ 0.3834471 -0.35238034 0.79785496 -0.30368384] [ 0.41302656 -0.52978277 -0.59858427 -0.4363899 ] [-0.77426254 -0.17798848 0.06360828 -0.6039798 ] [ 0.28791473 0.75065199 -0.03283771 -0.59375785]] 空间中的算法和数据结构本质上,由线、点、面等构成的对象构成了空间数据。使用 Qhull 库,SciPy 的 scipy.spatial 包可以计算三角剖分、Voronoi 图等。它还包括用于最近邻点查询的 KDTree 实现。 Delaunay 三角剖分当平面上的一组离散点在数学上进行三角剖分时,Delaunay 三角剖分是其中没有任何指定点位于任何三角形圆内的三角剖分。 示例 输出 ![]() |
本质上,图像处理包括操作图像以提取信息或创建原始图像的更好版本。scipy.ndimage 包包含多种图像处理和分析例程,可以处理任何维度的数组。
SciPy 提供了多个函数,可以对图像进行卷积和相关运算。
示例
输出
[40 25 27 17 14 35 24 22]
我们请求您订阅我们的新闻通讯以获取最新更新。