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上),可能是因为编译器版本不能很好地支持条目构造。