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维集成功能,界面比 dblquadtplquad ,已添加。

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函数 symmsyrksyr2khemmherkher2k 现在都被包裹在 scipy.linalg

矩阵函数

在尼克·希格姆(Nick Higham)和他的合著者最近的论文中详细描述之后,几个矩阵函数算法已经实现或更新。其中包括矩阵平方根 (sqrtm ),矩阵对数 (logm ),矩阵指数 (expm )及其Frechet导数 (expm_frechet )和分数矩阵幂 (fractional_matrix_power )。

scipy.optimize 改进

信赖域无约束最小化算法

这个 minimize 函数获得了无约束最小化的两个信赖域求解器: doglegtrust-ncg

scipy.sparse 改进

布尔比较与稀疏矩阵

所有稀疏矩阵类型现在都支持布尔数据和布尔运算。两个稀疏矩阵 AB 可以用所有预期的方式进行比较 A < BA >= BA != 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.xlogyscipy.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.readscipy.io.wavfile.write 现在可以处理浮点WAV文件。

scipy.interpolate 改进

B样条导数与反导数

scipy.interpolate.splderscipy.interpolate.splantider 增加了表示B-样条的导数和反导数的B-样条的计算函数。这些函数在基于类的FITPACK接口中也可用,如下所示 UnivariateSpline.derivativeUnivariateSpline.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 现在有了 axisddof 争论。

不推荐使用的功能

expm2 and expm3

矩阵指数函数 scipy.linalg.expm2scipy.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中。

删除了不推荐使用的关键字 xaxb 从… stats.distributions

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

作者

此版本包含以下人员的工作(至少为此版本贡献了一个修补程序,名称按字母顺序排列):

  • 豪尔赫·卡纳多·阿拉斯图伊+

  • 汤姆·奥尔德克罗夫特+

  • 马克斯·博林布罗克+

  • 约瑟夫·乔恩·布克+

  • 弗朗索瓦·布洛涅

  • 马修·布雷特

  • 克里斯蒂安·布罗德贝克+

  • 每个Brodtkorb+

  • 克里斯蒂安·布鲁弗+

  • 拉尔斯·比廷克(Lars Buitinck)

  • 叶夫根尼·布洛夫斯基+

  • 蒂姆·塞拉

  • 劳伦斯·陈+

  • 大卫·库尔纳波(David Cournapeau)

  • DRAžen LučAnin+

  • 亚历山大·J·邓拉普+

  • 内胚层

  • 安德烈·高卢+

  • 克里斯托夫·戈尔克(Christoph Gohlke)

  • 拉尔夫·戈默斯

  • 亚历克斯·格里芬+

  • 布莱克·格里菲斯+

  • 查尔斯·哈里斯

  • 鲍勃·赫姆博尔德+

  • 安德烈亚斯·希尔博尔

  • 吉黄+

  • Oleksandr(Sasha)Huziy+

  • Gert-Ludwig Ingold+

  • 索伊斯(雷)琼斯

  • 胡安·路易斯·卡诺·罗德里格斯+

  • 罗伯特·克恩

  • 安德烈亚斯·克洛克纳+

  • Sytse Knypstra+

  • 古斯塔夫·拉尔森+

  • 丹尼斯·拉沙尔德(Denis Laxalde)

  • 克里斯托弗·李(Christopher Lee)

  • 蒂姆·莱斯利

  • 温迪·刘+

  • Clemens Novak+

  • Takuya Oshima+

  • 约瑟夫·帕克泰尔

  • Illia Polosukhin+

  • Przemek Porebski+

  • 史蒂夫·理查森+

  • 布兰登·罗尔斯顿+

  • 海豚船长

  • 法兹鲁尔·沙里亚尔

  • 狮子座歌手+

  • 罗希特·西瓦普拉萨德+

  • 丹尼尔·B·史密斯+

  • 朱利安·泰勒

  • Louis Thibault+

  • Tomas Tomecek+

  • 约翰·特拉弗斯

  • 蔡崇信+

  • 雅各布·范德普拉斯

  • 帕特里克·瓦利

  • 保利·维尔塔宁(Pauli Virtanen)

  • 斯特凡·范德沃特

  • 沃伦·韦克瑟(Warren Weckesser)

  • 佩德罗·韦尔尼克+

  • Nils Werner+

  • Michael Wimmer+

  • 内森·伍兹+

  • 余志强+

共有65人参与了这次发布。名字中带有“+”的人第一次贡献了一个补丁。