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.solve_sylvester)、离散和连续李雅普诺夫方程(scipy.linalg.solve_lyapunovscipy.linalg.solve_discrete_lyapunov)以及离散和连续代数里卡蒂方程(scipy.linalg.solve_continuous_arescipy.linalg.solve_discrete_are)的求解器已添加到 scipy.linalg 中。这些求解器常用于线性控制理论领域。

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 模块新增了执行分箱统计的函数,这些函数是直方图在 1 维、2 维和多维上的推广: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 函数。

xaxb 参数对于 scipy.stats.distributions 中的所有分布来说已经不再使用;现已废弃。

向后不兼容的变更#

移除 scipy.maxentropy#

scipy.maxentropy 模块已在 0.10.0 版本中废弃并已移除。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 人为此版本做出了贡献。姓名旁带有“+”的人员是首次贡献补丁。