SciPy 0.13.0发行说明¶
目录
SciPy 0.13.0是7个月辛勤工作的顶峰。它包含许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。此版本中有许多弃用和API更改,如下所述。我们鼓励所有用户升级到此版本,因为有大量的错误修复和优化。此外,我们的开发注意力现在将转移到0.13.x分支上的错误修复版本,以及在主分支上添加新功能。
此版本需要Python2.6、2.7或3.1-3.3以及NumPy 1.5.1或更高版本。此版本的亮点包括:
支持稀疏矩阵的花式索引和布尔比较
线性模中的插值分解与矩阵函数
无约束极小化的两个新信赖域求解器
新功能¶
scipy.integrate 改进¶
n维数值积分¶
一种新功能 scipy.integrate.nquad ,它提供了N维集成功能,界面比 dblquad 和 tplquad ,已添加。
dopri* 改进¶
的中间结果 dopri ODE解算器系列现在可以通过 单点输出 回调函数。
scipy.linalg 改进¶
插值分解¶
Scipy现在包括一个新模块 scipy.linalg.interpolative 包含用于计算插值矩阵分解(ID)的例程。此功能基于P.G.Martinsson、V.Rokhlin、Y.Shkolnisky和M.Tygert的ID软件包,之前由K.L.Ho在PymatrixId包中对Python进行了改编。
极分解¶
一种新功能 scipy.linalg.polar ,以计算矩阵的极分解。
BLAS 3级功能¶
BLAS函数 symm , syrk , syr2k , hemm , herk 和 her2k 现在都被包裹在 scipy.linalg 。
矩阵函数¶
在尼克·希格姆(Nick Higham)和他的合著者最近的论文中详细描述之后,几个矩阵函数算法已经实现或更新。其中包括矩阵平方根 (sqrtm ),矩阵对数 (logm ),矩阵指数 (expm )及其Frechet导数 (expm_frechet )和分数矩阵幂 (fractional_matrix_power )。
scipy.optimize 改进¶
信赖域无约束最小化算法¶
这个 minimize 函数获得了无约束最小化的两个信赖域求解器: dogleg 和 trust-ncg 。
scipy.sparse 改进¶
布尔比较与稀疏矩阵¶
所有稀疏矩阵类型现在都支持布尔数据和布尔运算。两个稀疏矩阵 A 和 B 可以用所有预期的方式进行比较 A < B , A >= B , A != B ,产生与密集块数组类似的结果。还支持与密集矩阵和标量进行比较。
CSR与CSC花式标引¶
压缩稀疏行和列稀疏矩阵类型现在支持使用布尔矩阵、切片和列表进行奇特索引。因此,在A是(CSC或CSR)稀疏矩阵的情况下,您可以执行如下操作:
>>> A[A > 0.5] = 1 # since Boolean sparse matrices work
>>> A[:2, :3] = 2
>>> A[[1,2], 2] = 3
scipy.sparse.linalg 改进¶
新功能 onenormest 给出了线性算子的1-范数的一个下界,并已根据Higham和Tisseur(2000)实现。该函数不仅适用于稀疏矩阵,而且可以用来估计稠密矩阵的乘积或幂的范数,而不需要显式地构造中间矩阵。
线性算子矩阵指数的乘法作用 (expm_multiply )已按照Al-Mohy和Higham(2011年)的说明实施。
抽象线性算子 (scipy.sparse.linalg.LinearOperator )现在可以相乘、相加和求幂,产生新的线性运算符。这使得复合线性运算的构造更容易。
scipy.spatial 改进¶
的顶点 ConvexHull 现在可以通过 vertices 属性,该属性在2-D中提供了正确的方向。
scipy.signal 改进¶
余弦窗函数 scipy.signal.cosine 已添加。
scipy.special 改进¶
新功能 scipy.special.xlogy 和 scipy.special.xlog1py 都被添加了。这些函数可以简化和加快必须计算的代码 x * log(y) 并在下列情况下给出0 x == 0 。
scipy.io 改进¶
未格式化的Fortran文件读取器¶
新班级 scipy.io.FortranFile 便于读取由Fortran代码写入的未格式化的顺序文件。
scipy.io.wavfile 增强功能¶
scipy.io.wavfile.write 现在接受文件缓冲区。以前,它只接受文件名。
scipy.io.wavfile.read 和 scipy.io.wavfile.write 现在可以处理浮点WAV文件。
scipy.interpolate 改进¶
B样条导数与反导数¶
scipy.interpolate.splder 和 scipy.interpolate.splantider 增加了表示B-样条的导数和反导数的B-样条的计算函数。这些函数在基于类的FITPACK接口中也可用,如下所示 UnivariateSpline.derivative 和 UnivariateSpline.antiderivative 。
scipy.stats 改进¶
发行版现在允许在所有方法中除位置参数外还使用关键字参数。
该函数 scipy.stats.power_divergence 添加了Cressie-Read功率散度统计和拟合优度测试。包括在这一系列统计中的是“G-检验”(https://en.wikipedia.org/wiki/G-test).
scipy.stats.mood 现在接受多维输入。
已将选项添加到 scipy.stats.wilcoxon 用于连续性校正。
scipy.stats.chisquare 现在有一个 axis 论点。
scipy.stats.mstats.chisquare 现在有了 axis 和 ddof 争论。
不推荐使用的功能¶
expm2 and expm3¶
矩阵指数函数 scipy.linalg.expm2 和 scipy.linalg.expm3 都已弃用。所有用户都应该使用数字上更健壮的 scipy.linalg.expm 取而代之的是函数。
scipy.stats 功能¶
scipy.stats.oneway 已弃用; scipy.stats.f_oneway 应该改为使用。
scipy.stats.glm 已弃用。 scipy.stats.ttest_ind 是一个等价函数;在统计模型中可以找到更全功能的通用(和广义)线性模型实现。
scipy.stats.cmedian 已弃用; numpy.median 应该改为使用。
向后不兼容的更改¶
LIL矩阵分配¶
现在,为具有两个索引数组的LIL矩阵赋值与将值赋值给ndarray::
>>> x = lil_matrix((3, 3))
>>> x[[0,1,2],[0,1,2]]=[0,1,2]
>>> x.todense()
matrix([[ 0., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 2.]])
而不是给出结果::
>>> x.todense()
matrix([[ 0., 1., 2.],
[ 0., 1., 2.],
[ 0., 1., 2.]])
依赖于以前行为的用户将需要重新访问他们的代码。前面的行为是通过以下方式获得的 x[numpy.ix_([0,1,2],[0,1,2])] = ... 。
已弃用 radon 函数已删除¶
这个 misc.radon 函数已被删除,该函数在Scipy 0.11.0中已弃用。用户可以找到功能更齐全的 radon 功能在SCRICKIT-IMAGE中。
删除了不推荐使用的关键字 xa 和 xb 从… stats.distributions¶
关键字 xa 和 xb 自0.11.0起就不再推荐使用的,已从 scipy.stats 。
对MATLAB文件读取器/写入器的更改¶
主要的变化是,当保存为MATLAB 5格式的文件时,numpy中的一维数组现在成为行向量(形状1,N)。以前一维阵列保存为列向量(N,1)。这是为了协调编写MATLAB4和5格式的行为,并适应numpy和matlab的缺省设置-例如 np.atleast_2d 以行向量的形式返回一维数组。
现在,尝试以MATLAB 4格式保存大于2维的数组会引发错误,而不是静默地将数组重塑为2D。
scipy.io.loadmat('afile') 过去常常在寻找 afile 在Python系统路径上 (sys.path );现在 loadmat 仅在当前目录中查找相对路径文件名。
其他变化¶
安全修复: scipy.weave 在某些情况下以前以不安全的方式使用的临时目录。
现在需要Cython来构建 未发布 不同版本的Scipy。从Cython源代码生成的C文件不再包含在git repo中。但是,它们仍然以源代码版本的形式提供。
代码库得到了相当大的PEP8清理。一个 tox pep8 命令已添加;新代码应通过此测试命令。
Scipy不能再用gfortran 4.1编译(至少在RH5上),可能是因为编译器版本不能很好地支持条目构造。