SciPy 0.11.0 发行说明#

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

  • 添加了一个新模块,提供了许多常见的稀疏图算法。

  • 添加了到现有优化和根查找函数的新的统一接口。

鼓励所有用户升级到此版本,因为它包含大量错误修复和优化。我们的开发注意力现在将转移到 0.11.x 分支上的错误修复版本,以及在主分支上添加新特性。

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

新特性#

稀疏图子模块#

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

scipy.optimize 改进#

此版本对 optimize 模块进行了很多关注。除了添加的测试、文档改进、错误修复和代码清理之外,还进行了以下改进

  • 添加了统一的单变量和多变量函数最小值求解器接口。

  • 添加了统一的多变量函数根查找算法接口。

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

统一的最小值求解器接口#

添加了两个新函数 scipy.optimize.minimizescipy.optimize.minimize_scalar,分别提供了一个用于多变量和单变量函数最小值求解器的通用接口。对于多变量函数,scipy.optimize.minimize 提供了无约束优化方法 (fmin, fmin_powell, fmin_cg, fmin_ncg, fmin_bfgsanneal) 或约束优化方法 (fmin_l_bfgs_b, fmin_tnc, fmin_cobylafmin_slsqp) 的接口。对于单变量函数,scipy.optimize.minimize_scalar 提供了无约束和有界优化方法 (brent, golden, fminbound) 的接口。这使得比较和切换求解器更容易。

统一的根查找算法接口#

新的函数 scipy.optimize.root 为多元函数的求根算法提供了一个通用的接口,它嵌入了 fsolve, leastsqnonlin 求解器。

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) 的求解器已添加到 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 函数。

scipy.stats.distributions 中所有分布的 xaxb 参数已经没有被使用;它们现在已被弃用。

向后不兼容的更改#

删除 scipy.maxentropy#

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

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 人为本次发布做出了贡献。姓名旁边有“+”号的人是首次贡献补丁。