SciPy 0.9.0 发布说明#
SciPy 0.9.0 是 6 个月辛勤工作的结晶。它包含许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。此版本中出现了一些废弃和 API 更改,这些更改将在下面进行说明。鼓励所有用户升级到此版本,因为它包含大量的错误修复和优化。此外,我们的开发重点将转移到 0.9.x 分支上的错误修复版本,以及在开发主干上添加新功能。
此版本需要 Python 2.4 - 2.7 或 3.1 - 以及 NumPy 1.5 或更高版本。
请注意,SciPy 仍被视为“Beta”状态,因为我们正在努力发布 SciPy 1.0.0。1.0.0 版本将标志着 SciPy 开发的一个重要里程碑,在此之后更改包结构或 API 将更加困难。虽然这些 1.0 版本之前的版本被视为“Beta”状态,但我们致力于使其尽可能没有错误。
然而,在 1.0 版本发布之前,我们正在积极审查和完善其功能、组织和接口。这样做是为了使该包尽可能具有连贯性、直观性和实用性。为了实现这一目标,我们需要来自用户社区的帮助。具体来说,我们需要关于项目各个方面的反馈——从我们实现哪些算法到关于函数调用签名的细节——应有尽有。
Python 3#
Scipy 0.9.0 是第一个支持 Python 3 的 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.broyden1,scipy.optimize.broyden2)Anderson 方法 (
scipy.optimize.anderson)
简单迭代 (
scipy.optimize.diagbroyden,scipy.optimize.excitingmixing,scipy.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_atten 和 scipy.signal.kaiser_beta。
改进的统计测试 (scipy.stats)#
添加了新函数 scipy.stats.fisher_exact,它提供了 2x2 列联表的 Fisher 精确检验。
函数 scipy.stats.kendalltau 被重写,使其速度大大提高 (O(n log(n)) vs O(n^2))。
已废弃的功能#
已废弃的非线性求解器 (在 scipy.optimize 中)#
来自 scipy.optimize 的以下非线性求解器已废弃
broyden_modified(性能差)broyden1_modified(性能差)broyden_generalized(等同于anderson)anderson2(等同于anderson)broyden3(被新的有限内存 broyden 方法取代)vackar(重命名为diagbroyden)
已移除的功能#
已从 scipy.misc 中移除了已废弃的模块 helpmod、pexec 和 ppimport。
许多 scipy.ndimage 插值函数中的 output_type 关键字已移除。
scipy.linalg.qr 中的 econ 关键字已移除。通过指定 mode='economic' 仍可获得相同的功能。
旧的关联/卷积行为 (在 scipy.signal 中)#
scipy.signal.convolve、scipy.signal.convolve2d、scipy.signal.correlate 和 scipy.signal.correlate2d 的旧行为在 0.8.0 中已废弃,现在已移除。过去,如果第二个参数的维度大于第一个参数,并且模式与具有最大输入的维度相关,则卷积和关联会交换它们的参数。当前行为是永不交换输入,这是大多数人期望的,也是关联通常的定义方式。
scipy.stats#
在 scipy.stats 中,许多可从 numpy 获取或已被取代的函数,以及自 0.7 版本以来已被废弃的函数,已被移除:std、var、mean、median、cov、corrcoef、z、zs、stderr、samplestd、samplevar、pdfapprox、pdf_moments 和 erfc。这些更改也反映在 scipy.stats.mstats 中。
scipy.sparse#
从 scipy.sparse 中稀疏矩阵类的一些方法已被移除,这些方法自 0.7 版本以来已被废弃:save, rowcol, getdata, listprint, ensure_sorted_indices, matvec, matmat 和 rmatvec。
spkron, speye, spidentity, lil_eye 和 lil_diags 函数已从 scipy.sparse 中移除。前三个函数仍可作为 scipy.sparse.kron, scipy.sparse.eye 和 scipy.sparse.identity 使用。
稀疏矩阵构造函数中的 dims 和 nzmax 关键字已被移除。CSR 和 CSC 矩阵的 colind 和 rowind 属性已被移除。
scipy.sparse.linalg.arpack.speigs#
ARPACK 库的重复接口已移除。
其他变更#
ARPACK 接口更改#
scipy.sparse.linalg 中 ARPACK 特征值例程的接口已更改,以提高鲁棒性。
如果特征值迭代无法收敛,特征值和 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 –> svds