引言¶
SciPy是构建在Python的NumPy扩展上的数学算法和便利函数的集合。它通过向用户提供用于操作和可视化数据的高级命令和类,为交互式Python会话添加了强大的功能。有了SciPy,交互式Python会话将成为可与MATLAB、IDL、Octave、R-Lab和SciLab等系统相媲美的数据处理和系统原型环境。
将SciPy建立在Python基础上的另一个好处是,这也使强大的编程语言可用于开发复杂的程序和专门的应用程序。使用SciPy的科学应用程序受益于世界各地的开发人员在软件领域的众多利基领域中开发的附加模块。从并行编程到Web和数据库的子例程和类,Python程序员都可以使用。除了SciPy中的数学库之外,所有这些功能都是可用的。
本教程将让第一次使用本教程的用户熟悉它的一些最重要的功能。它假设用户已经安装了SciPy包。还假设有一些通用的Python工具,比如可以通过阅读Python发行版的教程获得这些工具。有关进一步的介绍性帮助,请将用户定向到NumPy文档。
为简洁和方便起见,我们通常假设主包(numpy、scipy和matplotlib)已导入为:
>>> import numpy as np
>>> import matplotlib as mpl
>>> import matplotlib.pyplot as plt
这些是我们的社会在讨论公共邮件列表后采纳的重要惯例。您将在整个NumPy和SciPy源代码和文档中看到使用这些约定。虽然我们显然不要求您在自己的代码中遵循这些约定,但强烈建议您这样做。
SciPy组织¶
SciPy被组织成覆盖不同科学计算领域的子包。下表汇总了这些信息:
子包 |
描述 |
---|---|
聚类算法 |
|
物理和数学常数 |
|
快速傅立叶变换例程 |
|
积分与常微分方程求解器 |
|
插值和光滑样条 |
|
输入和输出 |
|
线性代数 |
|
N维图像处理 |
|
正交距离回归 |
|
优化和寻根例程 |
|
信号处理 |
|
稀疏矩阵及其相关例程 |
|
空间数据结构和算法 |
|
特殊功能 |
|
统计分布和函数 |
SciPy子包需要单独导入,例如::
>>> from scipy import linalg, optimize
由于它们无处不在,这些子包中的一些函数也可以在 scipy
命名空间来简化它们在交互式会话和程序中的使用。此外,中的许多基本数组函数 numpy
也可以在 scipy
包裹。在逐个查看子包之前,我们将首先查看其中一些常见函数。
查找文档¶
本网站和NumPy在https://docs.scipy.org/,上都有Html和pdf两种格式的文档版本,几乎涵盖了所有可用的功能。但是,本文档仍在编写中,某些部分可能不完整或稀疏。由于我们是一个志愿者组织,并且依赖于社区的发展,我们欢迎并积极鼓励您的参与-从提供反馈到改进文档和代码。
在本网站中,Python的文档字符串用于在线文档。有两种方法可以阅读它们并获得帮助。一个是Python的命令 help
在 pydoc
模块。在不带参数的情况下输入此命令(即 >>> help
)启动交互式帮助会话,允许搜索所有Python可用的关键字和模块。其次,运行命令 help(obj) 以对象为参数显示该对象的调用签名和文档字符串。
的皮多克方法 help
很复杂,但使用寻呼机来显示文本。有时,这可能会干扰您在其中运行交互会话的终端。命令下还提供了一个特定于numpy/scipy的帮助系统 numpy.info
。传递给 help
命令打印到标准输出(或打印到作为第三个参数传递的可写对象)。的第二个关键字参数 numpy.info
定义用于打印的最大线条宽度。如果模块作为参数传递给 help
然后打印该模块中定义的函数和类的列表。例如:
>>> np.info(optimize.fmin)
fmin(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None,
full_output=0, disp=1, retall=0, callback=None)
Minimize a function using the downhill simplex algorithm.
Parameters
----------
func : callable func(x,*args)
The objective function to be minimized.
x0 : ndarray
Initial guess.
args : tuple
Extra arguments passed to func, i.e. ``f(x,*args)``.
callback : callable
Called after each iteration, as callback(xk), where xk is the
current parameter vector.
Returns
-------
xopt : ndarray
Parameter that minimizes function.
fopt : float
Value of function at minimum: ``fopt = func(xopt)``.
iter : int
Number of iterations performed.
funcalls : int
Number of function calls made.
warnflag : int
1 : Maximum number of function evaluations made.
2 : Maximum number of iterations reached.
allvecs : list
Solution at each iteration.
Other parameters
----------------
xtol : float
Relative error in xopt acceptable for convergence.
ftol : number
Relative error in func(xopt) acceptable for convergence.
maxiter : int
Maximum number of iterations to perform.
maxfun : number
Maximum number of function evaluations to make.
full_output : bool
Set to True if fopt and warnflag outputs are desired.
disp : bool
Set to True to print convergence messages.
retall : bool
Set to True to return list of solutions at each iteration.
Notes
-----
Uses a Nelder-Mead simplex algorithm to find the minimum of function of
one or more variables.
另一个有用的命令是 dir
,它可用于查看模块或包的命名空间。