SciPy 0.11.0 发行说明#

SciPy 0.11.0 是 8 个月辛勤工作的结晶。它包含许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。此版本的亮点包括

  • 新增了一个模块,提供了一些常见的稀疏图算法。

  • 新增了现有优化和求根函数的统一接口。

建议所有用户升级到此版本,因为它包含了大量的错误修复和优化。我们的开发重心将转移到 0.11.x 分支上的错误修复版本,以及 master 分支上新功能的添加。

此版本需要 Python 2.4-2.7 或 3.1-3.2 以及 NumPy 1.5.1 或更高版本。

新功能#

稀疏图子模块#

新的子模块 scipy.sparse.csgraph 实现了一系列用于存储为稀疏邻接矩阵的图的高效图算法。可用例程有

scipy.optimize 改进#

此版本中,优化模块受到了很多关注。除了增加测试、文档改进、错误修复和代码清理之外,还进行了以下改进

  • 新增了单变量和多变量函数最小化器的统一接口。

  • 新增了多变量函数求根算法的统一接口。

  • L-BFGS-B 算法已更新至 3.0 版本。

最小化器统一接口#

新增了两个函数 scipy.optimize.minimizescipy.optimize.minimize_scalar,分别提供了多变量和单变量函数最小化器的通用接口。对于多变量函数,scipy.optimize.minimize 提供了无约束优化方法(fminfmin_powellfmin_cgfmin_ncgfmin_bfgsanneal)或约束优化方法(fmin_l_bfgs_bfmin_tncfmin_cobylafmin_slsqp)的接口。对于单变量函数,scipy.optimize.minimize_scalar 提供了无约束和有界优化方法(brentgoldenfminbound)的接口。这使得比较和切换求解器更加容易。

求根算法统一接口#

新函数 scipy.optimize.root 为多变量函数的求根算法提供了一个通用接口,包含了 fsolveleastsqnonlin 求解器。

scipy.linalg 改进#

新的矩阵方程求解器#

scipy.linalg 中添加了 Sylvester 方程(scipy.linalg.solve_sylvester)、离散和连续 Lyapunov 方程(scipy.linalg.solve_lyapunovscipy.linalg.solve_discrete_lyapunov)以及离散和连续代数 Riccati 方程(scipy.linalg.solve_continuous_arescipy.linalg.solve_discrete_are)的求解器。这些求解器常用于线性控制理论领域。

QZ 和 QR 分解#

现在可以使用 scipy.linalg.qz 计算 QZ 分解,即广义 Schur 分解。此函数封装了 LAPACK 例程 sgges、dgges、cgges 和 zgges。

新增了函数 scipy.linalg.qr_multiply,它可以高效计算 Q(来自 QR 分解)与向量的矩阵乘积。

帕斯卡矩阵#

新增了一个用于创建帕斯卡矩阵的函数 scipy.linalg.pascal

稀疏矩阵的构造与运算#

新增了两个函数 scipy.sparse.diagsscipy.sparse.block_diag,分别用于轻松构造对角和块对角稀疏矩阵。

scipy.sparse.csc_matrixcsr_matrix 现在支持 sintanarcsinarctansinhtanharcsinharctanhrintsignexpm1log1pdeg2radrad2degfloorceiltrunc 等操作。以前,这些操作必须通过操作矩阵的 data 属性来执行。

LSMR 迭代求解器#

LSMR 是一种用于求解(稀疏)线性方程组和线性最小二乘系统的迭代方法,已作为 scipy.sparse.linalg.lsmr 添加。

离散正弦变换#

离散正弦变换函数的绑定已添加到 scipy.fftpack

scipy.interpolate 改进#

为了在球坐标系中进行插值,新增了三个类:scipy.interpolate.SmoothSphereBivariateSplinescipy.interpolate.LSQSphereBivariateSplinescipy.interpolate.RectSphereBivariateSpline

分箱统计 (scipy.stats)#

stats 模块增加了分箱统计函数,它是直方图的推广,可用于 1D、2D 和多维度:scipy.stats.binned_statisticscipy.stats.binned_statistic_2dscipy.stats.binned_statistic_dd

已弃用的功能#

scipy.sparse.cs_graph_components 已成为稀疏图子模块的一部分,并重命名为 scipy.sparse.csgraph.connected_components。调用旧例程将导致弃用警告。

scipy.misc.radon 已被弃用。更全功能的 radon 变换可以在 scikits-image 中找到。

scipy.io.save_as_module 已被弃用。保存多个 Numpy 数组的更好方法是使用 numpy.savez 函数。

scipy.stats.distributions 中所有分布的 xaxb 参数以前未被使用,现在已被弃用。

向后不兼容的变更#

移除 scipy.maxentropy#

在 0.10.0 版本中已弃用的 scipy.maxentropy 模块已被移除。scikits.learn 中的逻辑回归是此功能的一个良好且现代的替代方案。

splev 行为的微小变化#

样条评估函数现在对于大小为 1 的数组表现与 interp1d 类似。之前的行为

>>> from scipy.interpolate import splev, splrep, interp1d
>>> x = [1,2,3,4,5]
>>> y = [4,5,6,7,8]
>>> tck = splrep(x, y)
>>> splev([1], tck)
4.
>>> splev(1, tck)
4.

纠正后的行为

>>> splev([1], tck)
array([ 4.])
>>> splev(1, tck)
array(4.)

这也会影响 UnivariateSpline 类。

scipy.integrate.complex_ode 的行为#

complex_odey 属性行为已更改。以前,它以以下形式表示复值解

z = ode.y[::2] + 1j * ode.y[1::2]

现在,它直接是复值解

z = ode.y

T 检验行为的微小变化#

T 检验 scipy.stats.ttest_indscipy.stats.ttest_relscipy.stats.ttest_1samp 已更改,现在 0 / 0 返回 NaN 而不是 1。

其他更改#

scipy.sparse.linalg 中的 SuperLU 源已更新至上游的 4.3 版本。

新增了函数 scipy.signal.bode,它计算连续时间系统的幅度和相位数据。

双样本 T 检验 scipy.stats.ttest_ind 增加了一个选项,用于比较方差不等的样本,即 Welch T 检验。

scipy.misc.logsumexp 现在接受可选的 axis 关键字参数。

作者#

此版本包含了以下人员的工作(在此版本中至少贡献了一个补丁,按姓名首字母排序)

  • Jeff Armstrong

  • Chad Baker

  • Brandon Beacher +

  • behrisch +

  • borishim +

  • Matthew Brett

  • Lars Buitinck

  • Luis Pedro Coelho +

  • Johann Cohen-Tanugi

  • David Cournapeau

  • dougal +

  • Ali Ebrahim +

  • endolith +

  • Bjørn Forsman +

  • Robert Gantner +

  • Sebastian Gassner +

  • Christoph Gohlke

  • Ralf Gommers

  • Yaroslav Halchenko

  • Charles Harris

  • Jonathan Helmus +

  • Andreas Hilboll +

  • Marc Honnorat +

  • Jonathan Hunt +

  • Maxim Ivanov +

  • Thouis (Ray) Jones

  • Christopher Kuster +

  • Josh Lawrence +

  • Denis Laxalde +

  • Travis Oliphant

  • Joonas Paalasmaa +

  • Fabian Pedregosa

  • Josef Perktold

  • Gavin Price +

  • Jim Radford +

  • Andrew Schein +

  • Skipper Seabold

  • Jacob Silterra +

  • Scott Sinclair

  • Alexis Tabary +

  • Martin Teichmann

  • Matt Terry +

  • Nicky van Foreest +

  • Jacob Vanderplas

  • Patrick Varilly +

  • Pauli Virtanen

  • Nils Wagner +

  • Darryl Wally +

  • Stefan van der Walt

  • Liming Wang +

  • David Warde-Farley +

  • Warren Weckesser

  • Sebastian Werk +

  • Mike Wimmer +

  • Tony S Yu +

共有 55 人为此版本做出了贡献。名字旁有“+”的人是首次贡献补丁。