SciPy 0.8.0 发行说明#
SciPy 0.8.0 是 17 个月辛勤工作的结晶。它包含许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。此版本中已进行了一些弃用和 API 更改,如下所述。鼓励所有用户升级到此版本,因为它有大量错误修复和优化。此外,我们的开发重点现在将转移到 0.8.x 分支上的错误修复版本,以及在开发主干上添加新功能。此版本需要 Python 2.4 - 2.6 和 NumPy 1.4.1 或更高版本。
请注意,在致力于 SciPy 1.0.0 版本时,SciPy 仍被视为具有“Beta”状态。1.0.0 版本将标志着 SciPy 开发中的一个重要里程碑,之后更改包结构或 API 将更加困难。虽然这些 1.0 之前的版本被认为具有“Beta”状态,但我们致力于使其尽可能没有错误。
但是,在 1.0 版本发布之前,我们正在积极审查和改进功能、组织和接口。这样做是为了使该软件包尽可能连贯、直观和有用。为了实现这一目标,我们需要用户社区的帮助。具体来说,我们需要关于项目各个方面的反馈 - 一切 - 从我们实现的算法到我们函数的调用签名的详细信息。
Python 3#
Python 3 兼容性是计划中的,并且目前在技术上是可行的,因为 Numpy 已被移植。但是,由于与 Python 3 兼容的 Numpy 1.5 尚未发布,因此 Scipy 0.8 中尚未包含对 Python 3 的支持。计划于 2010 年秋季发布的 SciPy 0.9 很可能包含对 Python 3 的实验性支持。
主要的文档改进#
SciPy 文档已大大改进。
已弃用的功能#
交换相关函数的输入 (scipy.signal)#
涉及 correlate、correlate2d、convolve 和 convolve2d。如果第二个输入大于第一个输入,则会在调用底层计算例程之前交换输入。此行为已弃用,并将在 scipy 0.9.0 中删除。
已弃用的过时代码 (scipy.misc)#
模块 helpmod、ppimport 和 pexec 来自 scipy.misc 已弃用。它们将从 SciPy 版本 0.9 中删除。
其他弃用#
linalg:函数 solveh_banded 当前返回一个元组,其中包含 Cholesky 分解和线性系统的解。在 SciPy 0.9 中,返回值将仅是解。
函数 constants.codata.find 将生成 DeprecationWarning。在 Scipy 版本 0.8.0 中,向函数添加了关键字参数“disp”,默认值为“True”。在 0.9.0 中,默认值将为“False”。
signal.chirp 的 qshape 关键字参数已弃用。请改用参数 vertex_zero。
将多项式的系数作为参数 f0 传递给 signal.chirp 已弃用。请改用函数 signal.sweep_poly。
io.recaster 模块已弃用,并将在 0.9.0 中删除。
新功能#
DCT 支持 (scipy.fftpack)#
已添加新的 realtransforms,即离散余弦变换的 dct 和 idct;提供 I、II 和 III 型。
fft 函数的单精度支持 (scipy.fftpack)#
fft 函数现在也可以处理单精度输入:如果 x 是单精度,则 fft(x) 将返回一个单精度数组。
目前,对于不是 2、3 和 5 的组合的 FFT 大小,该变换在内部以双精度计算,以避免 FFTPACK 中的舍入误差。
相关函数现在实现常用定义 (scipy.signal)#
如果传递 old_behavior=False 参数,则输出现在应与其 matlab 和 R 对应项一致,并执行大多数人期望的操作
correlate、convolve 及其 2d 对应项不再根据它们的相对形状交换它们的输入;
相关函数现在在计算滑动和积时会共轭它们的第二个参数,这对应于相关性的常用定义。
LTI 函数的添加和修改 (scipy.signal)#
将函数 impulse2 和 step2 添加到
scipy.signal
。它们使用函数 scipy.signal.lsim2 分别计算系统的脉冲和阶跃响应。更改了函数 scipy.signal.lsim2,以将任何其他关键字参数传递给 ODE 求解器。
改进的波形发生器 (scipy.signal)#
对 scipy.signal
中的 chirp 函数进行了一些改进
修正了当 method="logarithmic" 时生成的波形;它现在生成一个也称为“指数”或“几何”线性调频波形的波形。(请参见 https://en.wikipedia.org/wiki/Chirp。)
添加了一个新的 chirp 方法“hyperbolic”。
现在,chirp 使用关键字 vertex_zero(一个布尔值)而不是关键字 qshape。
chirp 不再处理任意多项式。此功能已移至新函数 sweep_poly。
添加了一个新函数 sweep_poly。
scipy.linalg 中的新函数和其他更改#
将函数 cho_solve_banded、circulant、companion、hadamard 和 leslie 添加到 scipy.linalg
。
增强了函数 block_diag 以接受标量和 1D 参数,以及常用的 2D 参数。
scipy.optimize 中的新功能和更改#
添加了 curve_fit 函数;它接受一个函数,并使用非线性最小二乘法将其拟合到提供的数据。
当求解单个参数时,leastsq 和 fsolve 函数现在返回大小为 1 的数组,而不是标量。
新的稀疏最小二乘求解器#
将 lsqr 函数添加到 scipy.sparse
。此例程 查找大型稀疏线性方程组的最小二乘解。
基于 ARPACK 的稀疏 SVD#
scipy.sparse.linalg._eigen.arpack 中提供了稀疏矩阵 SVD 的简单实现。 它基于对 使用对称求解器,因此可能不是很精确。
scipy.constants.find
的可用替代行为scipy.constants.find
#
关键字参数 disp 已添加到函数 scipy.constants.find
,默认值为 True。 当 disp 为 True 时,其行为与 Scipy 0.7 版本相同。 当 False 时,该函数返回键的列表而不是打印它们。(在 SciPy 0.9 版本中,默认值将反转。)
不完全稀疏 LU 分解#
Scipy 现在封装了 SuperLU 4.0 版本,该版本支持不完全稀疏 LU 分解。 这些可以通过 scipy.sparse.linalg.spilu
访问。升级到 SuperLU 4.0 还修复了一些已知错误。
更快的 Matlab 文件读取器和默认行为更改#
我们已用 Cython 重写了 Matlab 文件读取器,现在它应该以与 Matlab 相同的速度读取 Matlab 文件。
读取器可以读取 Matlab 命名函数和匿名函数,但不能写入它们。
在 scipy 0.8.0 之前,我们将 Matlab 结构的数组作为 NumPy 对象数组返回,其中对象的属性名称为结构的字段。 从 0.8.0 开始,我们将 Matlab 结构作为 NumPy 结构化数组返回。 您可以使用 scipy.io.loadmat
和朋友的可选关键字参数 struct_as_record=False
来获取旧的行为。
Matlab 文件写入器存在不一致之处,它将 NumPy 一维数组在 Matlab 5 文件中写为列向量,在 Matlab 4 文件中写为行向量。 我们将在下一个版本中更改此行为,使其都写入行向量。 在调用写入器时会显示 FutureWarning 以警告此更改;目前我们建议使用 scipy.io.savemat
和朋友的 oned_as='row'
关键字参数。
更快地计算正交多项式#
可以使用 scipy.special
中的新向量化函数计算正交多项式的值:eval_legendre、eval_chebyt、eval_chebyu、eval_chebyc、eval_chebys、eval_jacobi、eval_laguerre、eval_genlaguerre、eval_hermite、eval_hermitenorm、eval_gegenbauer、eval_sh_legendre、eval_sh_chebyt、eval_sh_chebyu、eval_sh_jacobi。 这比构造多项式的完整系数表示更快,而之前只有这种方法可用。
请注意,以前的正交多项式例程现在也会在可能的情况下调用此功能。
Lambert W 函数#
现在可以使用 scipy.special.lambertw
来计算 Lambert W 函数。
改进的超几何 2F1 函数#
修订了 scipy.special.hyp2f1
的实参数实现。 新版本应为所有实参数生成准确的值。
径向基函数插值更灵活的接口#
除了可以使用字符串参数选择的内置径向基函数之外,scipy.interpolate.Rbf
类现在接受可调用对象作为“函数”参数的输入。
删除的功能#
scipy.stsci:该软件包已删除
删除了模块 scipy.misc.limits。
scipy.io#
NumPy 和 SciPy 中的 IO 代码正在进行大规模的重构。 NumPy 将是用于读取和写入 NumPy 数组的基本代码的所在位置,而 SciPy 将容纳各种数据格式(数据、音频、视频、图像、Matlab 等)的文件读取器和写入器。
在 0.8.0 版本中删除了 scipy.io
中的几个函数,包括:npfile、save、load、create_module、create_shelf、objload、objsave、fopen、read_array、write_array、fread、fwrite、bswap、packbits、unpackbits 和 convert_objectarray。 其中一些函数已被 NumPy 的原始读取和写入功能、内存映射功能或数组方法替换。 其他一些函数已从 SciPy 移到 NumPy,因为基本数组读取和写入功能现在由 NumPy 处理。