SciPy 0.14.0 发布说明#
SciPy 0.14.0 是8个月辛勤工作的结晶。它包含了许多新功能、大量的错误修复、改进的测试覆盖率和更好的文档。在此版本中,有一些弃用和API变更,如下文所述。鼓励所有用户升级到此版本,因为有许多错误修复和优化。此外,我们的开发重点将转移到0.14.x分支的错误修复版本,以及在主分支上添加新功能。
此版本需要 Python 2.6、2.7 或 3.2-3.4 以及 NumPy 1.5.1 或更高版本。
新功能#
scipy.interpolate
改进#
新增了一个用于规则网格插值的包装函数 scipy.interpolate.interpn
。interpn 支持任意维度的线性和最近邻插值,以及二维的样条插值。
在幂基和Bernstein多项式基中,分段多项式的更快实现已添加为 scipy.interpolate.PPoly
和 scipy.interpolate.BPoly
。新用户应优先使用这些而不是 scipy.interpolate.PiecewisePolynomial。
scipy.interpolate.interp1d
现在接受非单调输入并对其进行排序。如果性能至关重要,可以通过使用新的 assume_sorted
关键字来关闭排序。
在 scipy.interpolate
中增加了对双变量样条导数评估的功能。
新的类 scipy.interpolate.Akima1DInterpolator
实现了由 H. Akima 设计的分段三次多项式插值方案。
在任意维度中,针对规则的、非均匀间隔网格的快速插值功能已添加为 scipy.interpolate.RegularGridInterpolator
。
scipy.linalg
改进#
新函数 scipy.linalg.dft
计算离散傅里叶变换的矩阵。
已添加矩阵指数的条件数估计函数 scipy.linalg.expm_cond
。
scipy.optimize
改进#
添加了一组用于优化基准测试,可以通过 optimize.bench()
运行。
scipy.optimize.curve_fit
现在通过 absolute_sigma
关键字提供了更多可控的误差估计。
已添加对将自定义最小化方法传递给 optimize.minimize()
和 optimize.minimize_scalar()
的支持,目前这对于将 optimize.basinhopping()
与自定义局部优化器例程结合使用特别有用。
scipy.stats
改进#
新增了一个类 scipy.stats.multivariate_normal
,该类具有多元正态随机变量的功能。
scipy.stats
分布框架已经完成了大量工作。矩计算(主要是偏度和峰度)已经修复并验证,所有示例现在都可以运行,并且许多针对单个分布的精度和性能改进已经合并。
新函数 scipy.stats.anderson_ksamp
计算 k 样本 Anderson-Darling 检验,用于检验零假设,即 k 个样本来自同一母体。
scipy.signal
改进#
scipy.signal.iirfilter
及其相关函数用于设计巴特沃斯、切比雪夫、椭圆和贝塞尔 IIR 滤波器,现在都使用极点-零点(“zpk”)格式内部表示,而不是使用转换为分子/分母格式。因此,所产生的滤波器的精度,特别是高阶滤波器,得到了显著提高。
Savitzky-Golay 滤波器通过新函数 scipy.signal.savgol_filter
和 scipy.signal.savgol_coeffs
添加。
新函数 scipy.signal.vectorstrength
计算一组事件的向量强度,这是相位同步性的一种度量。
scipy.special
改进#
已添加计算 Box-Cox 变换的函数 scipy.special.boxcox
和 scipy.special.boxcox1p
。
scipy.sparse
改进#
在CSR、CSC和DOK索引速度方面有显著的性能提升。
当使用 Numpy >= 1.9(预计在2014年MM月发布)时,稀疏矩阵在传递给
np.dot
、np.multiply
和其他 ufuncs 的参数时能正确工作。在较早的 Numpy 和 Scipy 版本中,此类操作的结果是未定义的,通常是出乎意料的。稀疏矩阵不再局限于
2^31
个非零元素。它们会自动切换为使用 64 位索引数据类型来处理包含更多元素的矩阵。假设稀疏矩阵使用 int32 作为索引数据类型的用户代码将继续工作,除非是处理这种大型矩阵。处理更大矩阵的代码需要接受 int32 或 int64 索引。
已弃用的功能#
anneal
#
全局最小化函数 scipy.optimize.anneal 已被弃用。所有用户应改用 scipy.optimize.basinhopping
函数。
scipy.stats
#
randwcdf
和 randwppf
函数已被弃用。所有用户应改用特定分布的 rvs
方法。
概率计算别名 zprob
、fprob
和 ksprob
已被弃用。请改用相应分布的 sf
方法或直接使用 special
函数。
scipy.interpolate
#
PiecewisePolynomial
类已弃用。
向后不兼容的更改#
scipy.special.lpmn#
lpmn
不再接受复数值参数。新增了一个具有一致复数解析行为的函数 clpmn
,应改用此函数。
scipy.sparse.linalg#
在广义特征值问题的情况下,特征向量在2-范数中被归一化为单位向量,而不是遵循LAPACK的归一化约定。
由于许可证和安装问题,scipy.sparse.linalg
中已弃用的 UMFPACK 包装器已被移除。如果可用,scikits.umfpack
仍然在 spsolve
和 factorized
函数中透明地使用。否则,在这些函数中将使用 SuperLU 代替。
scipy.stats#
已弃用的函数 glm
、oneway
和 cmedian
已从 scipy.stats
中移除。
stats.scoreatpercentile
现在返回一个数组,而不是百分位数的列表。
scipy.interpolate#
用于计算单调分段插值导数的API已更改:如果 p 是一个 PchipInterpolator
对象,p.derivative(der) 返回一个表示 p 导数的可调用对象。对于就地导数,使用 __call__ 方法的第二个参数:p(0.1, der=2) 计算 p 在 x=0.1 处的二阶导数。
方法 p.derivatives 已被移除。