SciPy 0.14.0 发布说明#
SciPy 0.14.0 是 8 个月努力工作的结晶。它包含了许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。此版本中进行了一些弃用和 API 更改,详情如下。建议所有用户升级到此版本,因为它包含了大量的错误修复和优化。此外,我们的开发重点将转移到 0.14.x 分支的错误修复版本,以及 master 分支的新功能添加。
此版本需要 Python 2.6、2.7 或 3.2-3.4 和 NumPy 1.5.1 或更高版本。
新功能#
scipy.interpolate
改进#
已添加了一个用于在规则网格上进行插值的新包装函数 scipy.interpolate.interpn
。interpn 支持任意维度的线性和最近邻插值,以及二维样条插值。
已添加了幂和伯恩斯坦多项式基中分段多项式的更快实现,作为 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
和其他 ufunc 的参数时能正常工作。在更早的 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#
已从 scipy.stats
中删除了已弃用的函数 glm
、oneway
和 cmedian
。
stats.scoreatpercentile
现在返回一个数组而不是一个百分位数列表。
scipy.interpolate#
计算单调分段插值导数的 API 已更改:如果 p 是 PchipInterpolator
对象,则 p.derivative(der) 返回一个表示 p 的导数的可调用对象。对于原地导数,请使用 __call__ 方法的第二个参数:p(0.1, der=2) 计算 p 在 x=0.1 处的二阶导数。
方法 p.derivatives 已被移除。