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.broyden1
,scipy.optimize.broyden2
)安德森方法 (
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(nlog(N))vs O(n^2))。
不推荐使用的功能¶
过时的非线性求解器(在 scipy.optimize
)¶
下列非线性解算器来自 scipy.optimize
已弃用:
broyden_modified
(表现不佳)broyden1_modified
(表现不佳)broyden_generalized
(相当于anderson
)anderson2
(相当于anderson
)broyden3
(被新的内存有限的Broyden方法所取代)vackar
(已重命名为diagbroyden
)
已删除的功能¶
不推荐使用的模块 helpmod
, pexec
和 ppimport
已从 scipy.misc
。
这个 output_type
多个关键字中的 scipy.ndimage
已删除插值函数。
这个 econ
输入关键字 scipy.linalg.qr
已被移除。通过指定 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 从稀疏矩阵构造函数中删除了关键字。这个 colind 和 rowind 分别从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