SciPy 0.8.0发行说明

本项目0.8.0是17个月辛勤工作的顶峰。它包含许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。此版本中有许多弃用和API更改,如下所述。我们鼓励所有用户升级到此版本,因为有大量的错误修复和优化。此外,我们的开发注意力现在将转移到0.8.x分支上的错误修复版本,以及在开发主干上添加新功能。此版本需要Python2.4-2.6和NumPy 1.4.1或更高版本。

请注意,本网站仍被认为处于“测试版”状态,因为我们正在努力实现本网站的1.0.0版本。1.0.0版本将标志着SciPy开发过程中的一个重要里程碑,之后更改包结构或API将变得更加困难。虽然这些1.0之前的版本被认为是“测试版”,但我们致力于让它们尽可能地没有bug。

但是,在1.0版本之前,我们正在积极审查和改进功能、组织和界面。这样做是为了使软件包尽可能连贯、直观和有用。要实现这一点,我们需要来自用户社区的帮助。具体地说,我们需要关于项目各个方面的反馈--从我们实现的算法到函数调用签名的详细信息。

Python 3

由于Numpy已经移植,Python3兼容性正在计划中,目前在技术上是可行的。但是,由于兼容Python3的Numpy 1.5尚未发布,Scipy 0.8中尚未包含对Scipy中的Python3的支持。计划在2010年秋季推出的SciPy 0.9很可能包括对Python3的实验支持。

主要文档改进

SciPy文档得到了极大的改进。

不推荐使用的功能

将输入交换为相关函数(scipy.ignal)

关注度相关,关联2d,卷积和卷积2d。如果第二个输入大于第一个输入,则在调用基础计算例程之前交换输入。此行为已弃用,并将在Scipy 0.9.0中删除。

过时代码已弃用(scipy.misc)

模块 helpmodppimportpexec 从… scipy.misc 都已弃用。它们将从0.9版的SciPy中删除。

其他不推荐使用的词

  • linalg:函数 solveh_banded 当前返回包含Cholesky因式分解的元组和线性系统的解。在本网站0.9中,返回值就是解决方案。

  • 该函数 constants.codata.find 将生成DeproationWarning。在Scipy版本0.8.0中,向函数添加了关键字参数‘disp’,默认值为‘True’。在0.9.0中,默认值为‘false’。

  • 这个 qshape 的关键字参数 signal.chirp 已弃用。使用参数 vertex_zero 取而代之的是。

  • 将多项式的系数作为自变量传递 f0signal.chirp 已弃用。使用函数 signal.sweep_poly 取而代之的是。

  • 这个 io.recaster 模块已弃用,将在0.9.0中删除。

新功能

DCT支持(scipy.fftpack)

增加了新的实数变换,即离散余弦变换的DCT和IDCT;类型I、II和III可用。

对FFT函数的单精度支持(scipy.fftpack)

FFT函数现在也可以处理单精度输入:如果x是单精度,则FFT(X)将返回单精度数组。

目前,对于不是2、3和5组合的FFT大小,转换在内部以双精度计算,以避免FFTPACK中的舍入误差。

相关函数现在实现了通常的定义(scipy.ignal)

如果传递old_behavior=false参数,输出现在应该对应于它们的MATLAB和R对应项,并执行大多数人预期的操作:

  • 相关、卷积和它们的2D对应物不再依赖于它们的相对形状来交换它们的输入;

  • 相关函数现在在计算滑动和积的同时共轭它们的第二个变元,这与通常的相关定义相对应。

添加和修改LTI函数(scipy.ignal)

  • 功能 impulse2step2 已添加到 scipy.signal 。他们使用函数 scipy.signal.lsim2 分别计算系统的脉冲响应和阶跃响应。

  • 该函数 scipy.signal.lsim2 已更改为将任何其他关键字参数传递给ODE解算器。

改进的波形发生器(scipy.ignal)

chirp 中的函数 scipy.signal 作出了以下决定:

  • 在以下情况下生成的波形 method="logarithmic" 它现在产生的波形也被称为“指数”或“几何”啁啾。(请参阅https://en.wikipedia.org/wiki/Chirp.)

  • 一个新的 chirp 增加了“双曲线”方法。

  • 而不是关键字 qshapechirp 现在使用关键字 vertex_zero ,布尔值。

  • chirp 不再处理任意多项式。此功能已移至新功能, sweep_poly

一个新的功能, sweep_poly ,添加了。

scipy.linalg中的新函数和其他更改

功能 cho_solve_bandedcirculantcompanionhadamardleslie 已添加到 scipy.linalg

该函数 block_diag 已增强为接受标量和1D参数,以及通常的2D参数。

Scipy.Optimize中的新功能和更改

这个 curve_fit 函数已添加;它接受一个函数,并使用非线性最小二乘法将其与提供的数据进行拟合。

这个 leastsqfsolve 函数现在在求解单个参数时返回大小为1的数组,而不是标量。

一种新的稀疏最小二乘求解器

这个 lsqr function was added to scipy.sparse. This routine 查找大型稀疏线性方程组的最小二乘解。

基于ARPACK的稀疏奇异值分解

稀疏矩阵的SVD的一个简单实现可以在scipy.parse.linalg.eener.arpack中找到。它基于对<A,A>使用对称解算器,因此可能不是非常精确。

可供选择的行为适用于 scipy.constants.find

关键字参数 disp 已添加到函数中 scipy.constants.find ,使用默认值 True 。什么时候 dispTrue ,该行为与Scipy版本0.7中的行为相同。什么时候 False 时,该函数返回键列表,而不是打印它们。(在SciPy版本0.9中,默认设置将颠倒。)

不完全稀疏LU分解

Scipy现在包装SuperLU版本4.0,该版本支持不完整的稀疏LU分解。这些文件可以通过以下方式访问 scipy.sparse.linalg.spilu 。升级到SuperLU 4.0还修复了一些已知的错误。

更快的MATLAB文件读取器和默认行为更改

我们已经用Cython重写了MATLAB文件读取器,现在它读取MATLAB文件的速度应该与Matlab相同。

读者可以阅读MATLAB的命名函数和匿名函数,但不能编写它们。

在Scipy 0.8.0之前,我们已经将MATLAB结构数组作为Numpy对象数组返回,其中对象具有以结构字段命名的属性。从0.8.0开始,我们将MATLAB结构作为Numpy结构化数组返回。您可以使用可选的 struct_as_record=False 关键字参数为 scipy.io.loadmat 还有朋友。

MATLAB文件写入器有一个不一致之处,它在MATLAB 5文件中以列向量的形式写入数字一维数组,在MATLAB 4文件中以行向量的形式写入数字一维数组。我们将在下一个版本中更改这一点,因此两者都写入行向量。有一个 FutureWarning 在调用编写器以警告此更改时,目前我们建议使用 oned_as='row' 关键字参数为 scipy.io.savemat 还有朋友。

正交多项式的快速求值

正交多项式的值可以用新的矢量化函数在[1]中求值。 scipy.specialeval_legendreeval_chebyteval_chebyueval_chebyceval_chebyseval_jacobieval_laguerreeval_genlaguerreeval_hermiteeval_hermitenormeval_gegenbauereval_sh_legendreeval_sh_chebyteval_sh_chebyueval_sh_jacobi 。这比构建多项式的全系数表示更快,后者以前是唯一可用的方法。

请注意,如果可能,前面的正交多项式例程现在也将调用此功能。

Lambert W函数

scipy.special.lambertw 现在可用于计算Lambert W函数。

改进的超几何2F1函数

实施 scipy.special.hyp2f1 对实参数进行了修正。新版本应该为所有实参生成精确值。

更灵活的径向基函数插值接口

这个 scipy.interpolate.Rbf 除了内置的径向基函数(可以用字符串参数选择)外,类现在还接受一个可调用函数作为“function”参数的输入。

已删除的功能

scipy.stsci:包已删除

该模块 scipy.misc.limits 被移除了。

scipy.io

NumPy和SciPy中的IO代码正在进行广泛的修改。NumPy将是读写NumPy数组的基本代码所在的位置,而SciPy将容纳各种数据格式(数据、音频、视频、图像、MATLAB等)的文件读取器和写入器。

中的几个函数 scipy.io 在0.8.0版本中删除,包括: npfilesaveloadcreate_modulecreate_shelfobjloadobjsavefopenread_arraywrite_arrayfreadfwritebswappackbitsunpackbits ,以及 convert_objectarray 。其中一些函数已经被NumPy的原始读写功能、内存映射功能或数组方法所取代。因为基本的数组读写功能现在由NumPy处理,所以其他的已经从SciPy移到了NumPy。