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 为多元函数提供了根查找算法的通用接口,嵌入了 fsolveleastsqnonlin 求解器。

scipy.linalg 改进#

新的矩阵方程求解器#

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

QZ 和 QR 分解#

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

添加了函数 scipy.linalg.qr_multiply,该函数允许高效计算 QR 分解中 Q 矩阵与向量的乘积。

Pascal 矩阵#

添加了一个用于创建Pascal矩阵的函数 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-D、2-D 和多维空间中: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 已被弃用。在 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’s T检验。

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

作者#

此版本包含以下人员的贡献(至少为该版本贡献了一个补丁,按字母顺序排列姓名):

  • 杰夫·阿姆斯特朗

  • 查德·贝克

  • 布兰登·比彻 +

  • behrisch +

  • borishim +

  • 马修·布雷特

  • Lars Buitinck

  • 路易斯·佩德罗·科埃略 +

  • 约翰·科恩-塔努吉

  • David Cournapeau

  • dougal +

  • 阿里·易卜拉欣 +

  • endolith +

  • Bjørn Forsman +

  • 罗伯特·甘特纳 +

  • 塞巴斯蒂安·加斯纳 +

  • 克里斯托夫·戈尔克

  • Ralf Gommers

  • Yaroslav Halchenko

  • 查尔斯·哈里斯

  • 乔纳森·赫尔姆斯 +

  • 安德烈亚斯·希博尔

  • 马克·昂诺拉特 +

  • 乔纳森·亨特

  • 马克西姆·伊万诺夫 +

  • Thouis (Ray) Jones

  • 克里斯托弗·库斯特 +

  • 乔什·劳伦斯 +

  • 丹尼斯·拉萨尔德 +

  • Travis Oliphant

  • Joonas Paalasmaa +

  • 法比安·佩德罗萨

  • 约瑟夫·珀克托尔德

  • Gavin Price +

  • 吉姆·拉德福德 +

  • 安德鲁·沙因 +

  • Skipper Seabold

  • 雅各布·西尔特拉

  • 斯科特·辛克莱

  • 亚历克西斯·塔巴里 +

  • 马丁·泰希曼

  • 马特·特里

  • 尼基·范·福雷斯特 +

  • Jacob Vanderplas

  • 帕特里克·瓦林利 +

  • 保罗·维尔塔宁

  • Nils Wagner +

  • 达里尔·沃利 +

  • 斯蒂芬·范·德·瓦特

  • 王力明 +

  • 大卫·沃德-法利 +

  • 沃伦·韦克瑟

  • 塞巴斯蒂安·韦尔克 +

  • 迈克·维默 +

  • 托尼·S·余 +

共有 55 人参与了此次发布。名字后面带有“+”的人首次贡献了补丁。