SciPy 0.9.0发行说明

SciPy 0.9.0是6个月辛勤工作的顶峰。它包含许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。此版本中有许多弃用和API更改,如下所述。我们鼓励所有用户升级到此版本,因为有大量的错误修复和优化。此外,我们的开发注意力现在将转移到0.9.x分支上的错误修复版本,以及在开发主干上添加新功能。

此版本需要Python2.4-2.7或3.1-以及NumPy 1.5或更高版本。

请注意,本网站仍被认为处于“测试版”状态,因为我们正在努力实现本网站的1.0.0版本。1.0.0版本将标志着SciPy开发过程中的一个重要里程碑,之后更改包结构或API将变得更加困难。虽然这些1.0之前的版本被认为是“测试版”,但我们致力于让它们尽可能地没有bug。

但是,在1.0版本之前,我们正在积极审查和改进功能、组织和界面。这样做是为了使软件包尽可能连贯、直观和有用。要实现这一点,我们需要来自用户社区的帮助。具体地说,我们需要关于项目各个方面的反馈--从我们实现的算法到函数调用签名的详细信息。

Python 3

Scipy 0.9.0是第一个支持Python3的SciPy版本。 scipy.weave

要更改的Scipy源代码位置

在此版本发布后不久,Scipy将不再使用SVN作为版本控制系统,转而使用Git。从那时起,Scipy的开发源代码可以在以下位置找到

新功能

Delaunay细分 (scipy.spatial )

Scipy现在包括计算N维Delaunay镶嵌的例程,由 Qhull 计算几何库。这样的计算现在可以使用新的 scipy.spatial.Delaunay 接口。

N维插值 (scipy.interpolate )

现在显著改进了对散乱数据插值的支持。此版本包括一个 scipy.interpolate.griddata 除了2D和1D中的三次样条(C1-平滑)插值之外,还可以对N维散乱数据执行线性和最近邻插值的函数。每种插值器类型的面向对象的接口也是可用的。

非线性方程解算器 (scipy.optimize )

Scipy包含了用于求解大型非线性方程的新例程 scipy.optimize 。实现了以下方法:

  • 牛顿-克里洛夫 (scipy.optimize.newton_krylov )

  • (广义)割线方法:

    • 有限内存的Broyden方法 (scipy.optimize.broyden1scipy.optimize.broyden2 )

    • 安德森方法 (scipy.optimize.anderson )

  • 简单迭代 (scipy.optimize.diagbroydenscipy.optimize.excitingmixingscipy.optimize.linearmixing )

这个 scipy.optimize.nonlin 模块被完全重写,并且一些函数被弃用(见上文)。

新的线性代数例程 (scipy.linalg )

Scipy现在包含有效求解三角方程组的例程 (scipy.linalg.solve_triangular )。

改进的FIR过滤设计功能 (scipy.signal )

该函数 scipy.signal.firwin 经过改进,可以设计高通、带通、带阻和多带FIR滤波器。

该函数 scipy.signal.firwin2 已添加。此函数使用窗口方法创建具有任意频率响应的线性相位FIR过滤。

功能 scipy.signal.kaiser_attenscipy.signal.kaiser_beta 都被添加了。

改进的统计检验 (scipy.stats )

一种新功能 scipy.stats.fisher_exact ,这为2x2列联表提供了Fisher的精确检验。

该函数 scipy.stats.kendalltau 被重写以使其速度大大提高(O(nlog(N))vs O(n^2))。

不推荐使用的功能

过时的非线性求解器(在 scipy.optimize )

下列非线性解算器来自 scipy.optimize 已弃用:

  • broyden_modified (表现不佳)

  • broyden1_modified (表现不佳)

  • broyden_generalized (相当于 anderson )

  • anderson2 (相当于 anderson )

  • broyden3 (被新的内存有限的Broyden方法所取代)

  • vackar (已重命名为 diagbroyden )

已删除的功能

不推荐使用的模块 helpmodpexecppimport 已从 scipy.misc

这个 output_type 多个关键字中的 scipy.ndimage 已删除插值函数。

这个 econ 输入关键字 scipy.linalg.qr 已被移除。通过指定 mode='economic'

旧的关联/卷积行为(在 scipy.signal )

的旧行为 scipy.signal.convolvescipy.signal.convolve2dscipy.signal.correlatescipy.signal.correlate2d 在0.8.0中已弃用,现在已删除。如果第二个参数的维数大于第一个参数,并且模式相对于具有最大维数的输入,则卷积和关联用于交换它们的参数。当前的行为是永远不交换输入,这是大多数人所期望的,也是通常定义相关性的方式。

scipy.stats

中的许多函数 scipy.stats Numpy中提供的或已被取代并自0.7版起不推荐使用的已被删除: stdvarmeanmediancovcorrcoefzzsstderrsamplestdsamplevarpdfapproxpdf_momentserfc 。这些更改反映在 scipy.stats.mstats

scipy.sparse

中稀疏矩阵类的几种方法 scipy.sparse 自0.7版被删除后就不再推荐使用: saverowcolgetdatalistprintensure_sorted_indicesmatvecmatmatrmatvec

功能 spkronspeyespidentitylil_eyelil_diags 已从 scipy.sparse 。前三个函数仍然可用,如下所示 scipy.sparse.kronscipy.sparse.eyescipy.sparse.identity

这个 dimsnzmax 从稀疏矩阵构造函数中删除了关键字。这个 colindrowind 分别从CSR和CSC矩阵中删除属性。

scipy.sparse.linalg.arpack.speigs

ARPACK库的重复接口已删除。

其他变化

ARPACK接口更改

中的ARPACK特征值例程接口 scipy.sparse.linalg 为了更强的健壮性而进行了更改。

特征值和SVD例程现在引发 ArpackNoConvergence 如果特征值迭代不收敛。如果需要部分收敛的结果,可以按如下方式访问它们:

import numpy as np
from scipy.sparse.linalg import eigs, ArpackNoConvergence

m = np.random.randn(30, 30)
try:
    w, v = eigs(m, 6)
except ArpackNoConvergence, err:
    partially_converged_w = err.eigenvalues
    partially_converged_v = err.eigenvectors

几个错误也被修复了。

此外,这些例程更名如下:

  • Eigen-->Eigs

  • Eigen_Symmetric-->Eigsh

  • SVD-->SVD