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”)格式,而不是使用到分子/分母格式的转换。因此,生成的滤波器(尤其是高阶滤波器)的精度显着提高。
使用新函数 scipy.signal.savgol_filter 和 scipy.signal.savgol_coeffs 添加了 Savitzky-Golay 滤波器。
新函数 scipy.signal.vectorstrength 计算一组事件的矢量强度,即相位同步的度量。
scipy.special 改进#
已添加函数 scipy.special.boxcox 和 scipy.special.boxcox1p,它们计算 Box-Cox 变换。
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 导数的 callable 对象。对于原地导数,使用 __call__ 方法的第二个参数:p(0.1, der=2) 计算 p 在 x=0.1 处的二阶导数。
方法 p.derivatives 已被移除。