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 支持任意维度的线性插值和最近邻插值,以及二维中的样条插值。
以幂和伯恩斯坦多项式为基的逐段多项式的更快实现已添加为 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
改进#
添加了计算 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。