SciPy 0.7.0发行说明¶
目录
SciPy 0.7.0是16个月辛勤工作的顶峰。它包含许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。此版本中有许多弃用和API更改,如下所述。我们鼓励所有用户升级到此版本,因为有大量的错误修复和优化。此外,我们的开发注意力现在将转移到0.7.x分支上的错误修复版本,以及在开发主干上添加新功能。此版本需要Python2.4或2.5以及NumPy 1.2或更高版本。
请注意,本网站仍被认为处于“测试版”状态,因为我们正在努力实现本网站的1.0.0版本。1.0.0版本将标志着SciPy开发过程中的一个重要里程碑,之后更改包结构或API将变得更加困难。虽然这些1.0之前的版本被认为是“测试版”,但我们致力于让它们尽可能地没有bug。例如,除了修复此版本中的大量错误外,自上次发布以来,我们还将单元测试的数量增加了一倍。
但是,在1.0版本之前,我们正在积极审查和改进功能、组织和界面。这样做是为了使软件包尽可能连贯、直观和有用。要实现这一点,我们需要来自用户社区的帮助。具体地说,我们需要关于项目各个方面的反馈--从我们实现的算法到函数调用签名的详细信息。
在过去的一年里,我们看到社区参与的迅速增加,以及大量基础设施的改进,以降低对屏障的贡献(例如,更明确的编码标准,改进的测试基础设施,更好的文档工具)。在接下来的一年里,我们希望看到这一趋势继续下去,并邀请每个人都更多地参与进来。
Python 2.6和3.0¶
为了使SciPy与Python2.6兼容,已经做了大量的工作;然而,在这方面仍然存在一些问题。2.6支持的主要问题是NumPy。在UNIX(包括MacOSX)上,NumPy 1.2.1大部分都可以工作,但有几点需要注意。在Windows上,存在与编译过程相关的问题。即将发布的NumPy 1.3版本将解决这些问题。对SciPy0.7的2.6支持的任何剩余问题将在错误修复版本中解决。
Python3.0根本不受支持;它需要将NumPy移植到Python3.0。这需要付出巨大的努力,因为必须移植大量的C代码。向3.0的过渡仍在考虑之中;目前,我们还没有这个过渡的时间表或路线图。
主要文档改进¶
SciPy文档得到了极大的改进;您可以查看HTML参考手册 online 或将其下载为PDF文件。新的参考指南是使用流行的 Sphinx tool 。
此版本还包括更新后的教程,自从2005年将SciPy移植到NumPy之后就再也没有提供过该教程。虽然不全面,但本教程展示了如何使用Scipy的几个基本部分。它还包括 ndimage
文档来自 numarray
手册。
尽管如此,在文档方面还需要付出更多努力。幸运的是,现在为Scipy文档做贡献比以前更容易了:如果您发现其中有一部分需要改进,并且想要帮助我们,请在我们位于https://docs.scipy.org/的基于Web的文档编辑器中注册用户名并更正问题。
运行测试¶
NumPy 1.2引入了一个新的测试框架,该框架基于 nose 。从这个版本开始,SciPy现在也使用了新的NumPy测试框架。利用新的测试框架需要 nose
版本0.10或更高版本。新框架的一个主要优势是它极大地简化了单元测试的编写-考虑到测试的快速增加,这一切都已经得到了回报。要运行完整的测试套件,请执行以下操作:
>>> import scipy
>>> scipy.test('full')
详情请参阅 The NumPy/SciPy Testing Guide 。
我们还极大地提高了我们的测试覆盖率。在0.6.0版本中只有2000多个单元测试;这个版本几乎是这个数字的两倍,只有4000多个单元测试。
构建Science Py¶
添加了对NumScons的支持。NumScons是NumPy/SciPy的试探性新构建系统,使用 SCons 在它的核心。
SCons是下一代构建系统,旨在取代受人尊敬的 Make
with the integrated functionality of autoconf
/automake
和 ccache
. Scons is written in Python and its configuration files are Python scripts. NumScons is meant to replace NumPy's custom version of distutils
providing more advanced functionality, such as autoconf
, improved fortran support, more tools, and support for numpy.distutils
/scons
合作。
已移除沙盒¶
在2005年将SciPy移植到NumPy时,几个包和模块被移到 scipy.sandbox
。沙箱是正在快速开发且API不断变化的包的中转站。它也是一个被破坏的代码可以生存的地方。沙箱已经很好地实现了它的目的,但也开始创建念力。因此, scipy.sandbox
被移除了。大部分代码被移到 scipy
,一些代码被制成一个 scikit
,并且剩余的代码刚刚被删除,因为该功能已被其他代码取代。
稀疏矩阵¶
稀疏矩阵有了广泛的改进。现在支持整数数据类型,如 int8
, uint32
等。新增了两种稀疏格式:
新班级
dia_matrix
:稀疏对角线格式新班级
bsr_matrix
:挡路企业社会责任格式
添加了几个新的稀疏矩阵构造函数:
sparse.kron
:稀疏Kronecker产品sparse.bmat
: sparse version ofnumpy.bmat
sparse.vstack
: sparse version ofnumpy.vstack
sparse.hstack
: sparse version ofnumpy.hstack
添加了子矩阵提取和非零值:
sparse.tril
:提取下三角形sparse.triu
:提取上三角形sparse.find
:非零值及其索引
csr_matrix
和 csc_matrix
现在支持切片和花式索引(例如, A[1:3, 4:7]
和 A[[3,2,6,8],:]
)。现在可以在所有稀疏格式之间进行转换:
使用成员函数,如
.tocsr()
和.tolil()
使用
.asformat()
成员函数,例如A.asformat('csr')
使用构造函数
A = lil_matrix([[1,2]]); B = csr_matrix(A)
所有稀疏构造函数现在都接受密集矩阵和列表。例如:
A = csr_matrix( rand(3,3) )
andB = lil_matrix( [[1,2],[3,4]] )
中对角线的处理 spdiags
功能已更改。它现在与同名的MATLAB(TM)函数一致。
已经对格式转换和稀疏矩阵运算进行了大量的效率改进。最后,此版本包含许多错误修复。
统计软件包¶
已添加掩码数组的统计函数,可通过 scipy.stats.mstats
。这些功能与中的对应功能相似 scipy.stats
但尚未验证它们是否具有相同的接口和算法。
修复了统计函数的几个错误,其中 kstest
和 percentileofscore
获得了新的关键字参数。
添加了以下项的弃用警告 mean
, median
, var
, std
, cov
,以及 corrcoef
。这些函数应该用它们的呆板对应函数来代替。但是,请注意,某些默认选项在 scipy.stats
以及这些函数的模糊版本。
修复了大量错误,以 stats.distributions
:所有泛型方法现在都可以正常工作,个别发行版中的几个方法已更正。然而,一些问题仍然存在于更高的时刻。 (skew
, kurtosis
)和熵。最大似然估计器, fit
在某些情况下,必须仔细选择起始值,而在其他情况下,最大似然法的通用实现可能不是数值上合适的估计方法。
我们预计在下一版本的Scipy中会有更多的错误修复、数值精度的提高和增强。
IO封装返工¶
NumPy和SciPy中的IO代码正在进行广泛的修改。NumPy将是读写NumPy数组的基本代码所在的位置,而SciPy将容纳各种数据格式(数据、音频、视频、图像、MATLAB等)的文件读取器和写入器。
中的几个函数 scipy.io
已弃用,将在0.8.0版本中删除,包括 npfile
, save
, load
, create_module
, create_shelf
, objload
, objsave
, fopen
, read_array
, write_array
, fread
, fwrite
, bswap
, packbits
, unpackbits
,以及 convert_objectarray
。其中一些函数已经被NumPy的原始读写功能、内存映射功能或数组方法所取代。因为基本的数组读写功能现在由NumPy处理,所以其他的已经从SciPy移到了NumPy。
Matlab(TM)文件读取器/写入器有许多改进:
默认版本5
用于结构、单元数组和对象的V5编写器
用于函数句柄和64位整数的V5读取器/写入器
将STRUCT_AS_RECORD关键字参数新到
loadmat
,它将matlab中的struct数组加载为numpy中的记录数组。字符串数组具有
dtype='U...'
而不是dtype=object
loadmat
不再挤压单个维度,即squeeze_me=False
默认情况下,
新的层次聚类模块¶
本模块将新的分层群集功能添加到 scipy.cluster
包裹。这些功能接口类似于MATLAB(TM)的统计工具箱提供的功能,以帮助更容易地迁移到NumPy/SciPy框架,实施的链接方法包括单一、完全、平均、加权、质心、中值和Ward。
此外,还提供了几个函数,用于计算不一致性统计信息、共生距离和子代之间的最大距离。这个 fcluster
和 fclusterdata
函数将层次群集转换为一组平面群集。由于这些扁平的簇是通过将树砍成树木森林而生成的,所以 leaders
函数采用链接和平面聚类,并查找林中每棵树的根。这个 ClusterNode
类将分层群集表示为字段可导航树对象。 to_tree
将矩阵编码的分层群集转换为 ClusterNode
对象。提供了在MATLAB和SciPy链接编码之间进行转换的例程。最后,一个 dendrogram
函数使用matplotlib将层次聚类绘制为树状图。
新建空间包¶
新的空间包包含一组空间算法和数据结构,对空间统计和群集应用程序很有用。它包括用于计算精确和近似最近邻居的快速编译代码,以及具有相同接口的纯python kd-tree,但支持注释和各种其他算法。随着用户需求变得更加清晰,这两个模块的API可能会有所变化。
它还包括一个 distance
模块,包含用于计算向量之间距离的距离和相异函数的集合,这对于空间统计、聚类和kd-tree非常有用。提供的距离和相异函数包括布雷-柯蒂斯、堪培拉、切比雪夫、城市挡路、余弦、骰子、欧几里德、汉明、贾卡德、库尔辛斯基、马哈拉诺比斯、Matching、明可夫斯基、罗杰斯-塔尼莫托、罗素-拉奥、平方欧几里德、标准化欧几里德、索卡尔-米切纳、索卡尔-斯尼斯和尤勒。
这个 pdist
函数计算一组向量中所有无序向量对之间的成对距离。这个 cdist
计算两组矢量的笛卡尔乘积中所有矢量对的距离。成对距离矩阵以压缩形式存储;只存储上三角形。 squareform
在正方形和压缩形式之间转换距离矩阵。
修改后的fftpack包¶
FFTW2、FFTW3、MKL和DJBFFT包装器已删除。只剩下(NETLIB)fftpack。通过专注于一个后端,我们希望能够更轻松地添加新功能,比如对Float32的支持。
新常量包¶
scipy.constants
提供物理常数和转换因子的集合。这些常数取自CODATA推荐值的基本物理常数:2002。它们可以在Physiics.nist.gov/constants中找到。这些值以包含值、单位和相对精度的元组的形式存储在字典Physical_Constants中-按该顺序排列。除非另有说明,否则所有常量均以SI单位表示。提供了几个帮助器函数。
新的径向基函数模块¶
scipy.interpolate
现在包含一个径向基函数模块。径向基函数可用于平滑/内插n维的散乱数据,但在进行观测数据范围之外的外推时应谨慎使用。
一种新型复数常微分方程积分器¶
scipy.integrate.ode
现在包含ZVODE复值常微分方程解算器的包装器(由Peter N.Brown、Alan C.Hindmarsh和George D.Byrne编写)。
一种新的广义对称厄米特征值问题求解器¶
scipy.linalg.eigh
现在包含更多LAPACK对称和厄米特特征值问题解算器的包装器。用户现在可以解决一般问题,只选择一定范围的特征值,并选择以增加内存使用量为代价使用更快的算法。签名者的签名 scipy.linalg.eigh
做了相应的改变。
修复内插包中的错误¶
的返回值的形状 scipy.interpolate.interp1d
如果插值数据具有2个以上的维度,并且AXIS关键字设置为非默认值,则通常是不正确的。此问题已修复。而且呢, interp1d
如果输入是标量,则现在返回标量(0D数组)。的用户 scipy.interpolate.interp1d
如果代码依赖于以前的行为,则可能需要修改代码。
编织清理¶
在许多方面都有改进 scipy.weave
。 blitz++
被作者重新许可为与本网站许可证兼容。 wx_spec.py
被移除了。
已知问题¶
以下是Scipy 0.7.0的已知问题:
在窗口上编织测试失败:这些都是已知的,并且正在修改。
用GCC 4.3(std::labs)编织测试失败:这是一个GCC 4.3错误。解决方法是在scipy/weave/blitz/blitz/funcs.h中添加#include<cstdlib>(第27行)。您可以在已安装的Scipy中(在site包中)进行更改。