SciPy 0.18.0发行说明¶
目录
-
-
scipy.signal
改进scipy.sparse
改进scipy.stats
改进scipy.linalg
改进
-
SciPy 0.18.0是6个月辛勤工作的顶峰。它包含许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。此版本中有许多弃用和API更改,如下所述。我们鼓励所有用户升级到此版本,因为有大量的错误修复和优化。此外,我们的开发注意力现在将转移到0.19.x分支上的错误修复版本,以及在主分支上添加新功能。
此版本需要Python 2.7或3.4-3.5以及NumPy 1.7.1或更高版本。
此版本的亮点包括:
两点边值问题的一种新的常微分方程求解器 scipy.optimize.solve_bvp 。
一个新的班级, CubicSpline ,用于数据的三次样条插值。
n维张量积多项式,
scipy.interpolate.NdPPoly
。球面Voronoi图,
scipy.spatial.SphericalVoronoi
。支持离散时间线性系统,
scipy.signal.dlti
。
新功能¶
scipy.integrate
改进¶
实现了常微分方程两点边值问题的求解器。 scipy.integrate.solve_bvp
。该求解器允许不分离的边界条件、未知参数和某些奇异项。利用四阶配置算法求出C1连续解。
scipy.interpolate
改进¶
现在可以通过以下方式使用三次样条插值 scipy.interpolate.CubicSpline
。此类表示通过给定点且C2连续的分段三次多项式。它在每一段上用标准多项式基表示。
n维张量积分段多项式的表示形式为 scipy.interpolate.NdPPoly
班级。
一元分段多项式类, PPoly 和 Bpoly ,现在可以在周期域上求值。使用 extrapolate="periodic"
此操作的关键字参数。
scipy.fftpack
改进¶
scipy.fftpack.next_fast_len
函数计算FFTPACK的下一个“常规”数字。将输入填充到此长度可以显著提高 scipy.fftpack.fft
。
scipy.signal
改进¶
在该函数中实现了使用多相滤波的重采样 scipy.signal.resample_poly
。此方法对信号进行上采样,应用零相位低通FIR过滤,然后使用 scipy.signal.upfirdn
(这也是0.18.0中的新增功能)。此方法可以比由提供的基于FFT的滤波更快 scipy.signal.resample
寻找一些信号。
scipy.signal.firls
,它使用最小二乘误差最小化来构造FIR滤波器。
scipy.signal.sosfiltfilt
,它执行前向后向过滤,如下所示 scipy.signal.filtfilt
但对于二阶截面,添加了。
离散时间线性系统¶
scipy.signal.dlti
提供离散时间线性系统的实现。因此, StateSpace , TransferFunction 和 ZerosPolesGain 班级已经学习了一个新的关键字, dt ,它可用于创建相应系统表示的离散时间实例。
scipy.sparse
改进¶
功能 sum , max , mean , min , transpose ,以及 reshape 在……里面 scipy.sparse
中类似定义的函数的兼容性。 numpy
。
稀疏矩阵现在有一个 count_nonzero 方法,该方法计算矩阵中非零元素的数量。不像 getnnz() 和 nnz
属性,该属性返回存储条目的数量(数据属性的长度),则此方法计算数据中非零条目的实际数量。
scipy.optimize
改进¶
内尔德-米德极小化算法的实现 scipy.minimize(..., method="Nelder-Mead") ,获得新的关键字, initial_simplex ,它可用于指定优化过程的初始单纯形。
改进了CG和BFGS最小化算法中的初始步长选择。我们预计,在某些情况下,这一变化将提高优化的数值稳定性。有关详细信息,请参阅拉式请求GH-5536。
改进了SLSQP优化中对无限边界的处理。我们预计,在某些情况下,这一改变将提高优化的数值稳定性。详见拉取请求GH-6024。
添加了一大套全局优化基准测试 scipy/benchmarks/go_benchmark_functions
。有关详细信息,请参阅拉取请求GH-4191。
如果调用方没有设置最大迭代次数或函数求值的限制,Nelder-Mead和Powell最小化现在只会设置默认值。在某些函数收敛速度较慢且仅设置1个极限的情况下,最小化可能会比以前的版本持续更长的时间,因此更有可能达到收敛。参见问题GH-5966。
scipy.stats
改进¶
梯形分布已经实现为 scipy.stats.trapz
。歪斜正态分布已经实现为 scipy.stats.skewnorm
。BURR类型XII分布已经实现为 scipy.stats.burr12
。三参数和四参数kappa分布已经实现为 scipy.stats.kappa3
和 scipy.stats.kappa4
,分别为。
新的 scipy.stats.iqr
函数计算分布的四分位数间区域。
随机矩阵¶
scipy.stats.special_ortho_group
和 scipy.stats.ortho_group
分别提供SO(N)和O(N)组中的随机矩阵的生成器。它们生成Haar分布中的矩阵,Haar分布是这些群流形上唯一的均匀分布。
scipy.stats.random_correlation
提供给定指定特征值的随机相关矩阵的生成器。
scipy.linalg
改进¶
scipy.linalg.svd
获得了新的关键字参数, lapack_driver
。可用的驱动程序包括 gesdd
(默认)和 gesvd
。
scipy.linalg.lapack.ilaver
返回链接到的LAPACK库SciPy的版本。
scipy.spatial
改进¶
布尔距离, scipy.spatial.pdist ,已经加快了速度。改进因函数和输入大小而异。在许多情况下,可以预期加速速度为x2-x10。
新班级 scipy.spatial.SphericalVoronoi
在球面上构造Voronoi图。详情请参见拉取请求GH-5232。
scipy.cluster
改进¶
实现了一种新的聚类算法--最近邻链算法 scipy.cluster.hierarchy.linkage
。因此,可以预期算法会有显著的改进 (\(O(N^2)\) 而不是 \(O(N^3)\) )用于几种链接方法。
scipy.special
改进¶
新功能 scipy.special.loggamma
计算Gamma函数的对数的主分支。对于真实输入, loggamma
与 scipy.special.gammaln
。对于复杂输入,它在复杂平面中具有更一致的行为,应该优先于 gammaln
。
球面贝塞尔函数的矢量化形式已经实现为 scipy.special.spherical_jn
, scipy.special.spherical_kn
, scipy.special.spherical_in
和 scipy.special.spherical_yn
。建议在以下情况下使用 sph_*
函数,这些函数现在已弃用。
几个特殊功能已经扩展到复杂的域和/或已经看到域/稳定性的改进。这包括 spence , digamma , log1p 还有其他几个人。
不推荐使用的功能¶
的跨类属性 lti 系统已被弃用。以下属性/setter将引发 DeprecationWarning :
名称-(访问/设置引发警告)-(设置引发警告) * StateSpace - (num, den, gain) - (zeros, poles) * TransferFunction (A , B , C , D , gain )- (zeros , poles )*ZerosPolesGain (A , B , C , D , num , den )-()
球面贝塞尔函数, sph_in
, sph_jn
, sph_kn
, sph_yn
, sph_jnyn
和 sph_inkn
已被弃用,取而代之的是 scipy.special.spherical_jn
和 spherical_kn
, spherical_yn
, spherical_in
。
中的以下函数 scipy.constants
已弃用: C2K
, K2C
, C2F
, F2C
, F2K
和 K2F
。它们被一个新函数取代 scipy.constants.convert_temperature
它可以执行所有这些转换,再加上朗肯温标的来回转换。
向后不兼容的更改¶
scipy.optimize
¶
新算法的收敛性判据 optimize.bisect
, optimize.brentq
, optimize.brenth
,以及 optimize.ridder
现在的工作方式与 numpy.allclose
。
scipy.ndimage
¶
中的偏移 ndimage.iterpolation.affine_transform
现在,无论矩阵是使用一维数组还是二维数组指定的,在应用矩阵之后,都会一致地将其相加。
scipy.stats
¶
stats.ks_2samp
用于在输入不是实数或包含NAN时返回无意义的值。它现在为这类输入提出了一个例外。
的几种不推荐使用的方法 scipy.stats
已删除分发: est_loc_scale
, vecfunc
, veccdf
和 vec_generic_moment
。
不推荐使用的函数 nanmean
, nanstd
和 nanmedian
已从 scipy.stats
。这些函数在Scipy 0.15.0中已弃用,取而代之的是它们的 numpy
等价物。
一只虫子在 rvs()
中的分布方法 scipy.stats
已经修好了。当参数为 rvs()
在许多情况下,返回的随机样本不是随机的。这个问题的一个简单例子是 stats.norm.rvs(loc=np.zeros(10))
。由于该错误,该调用将返回10个相同的值。该漏洞只影响依赖形状、位置和比例参数广播的代码。
这个 rvs()
方法还接受了一些它不应该有的参数。在以下情况下可能会出现向后不兼容的情况 rvs()
被接受的论点,事实上,与广播不兼容。一个例子是
stats.gamma.rvs( [2、5、10、15] ,大小=(2,2))
第一个参数的形状与请求的大小不兼容,但该函数仍返回形状为(2,2)的数组。在Scipy 0.18中,调用程序生成一个 ValueError
。
scipy.io
¶
scipy.io.netcdf
掩码现在优先于 _FillValue
属性覆盖在 missing_value
属性,如果两者都给定的话。此外,只有当数据与以下属性之一完全匹配时,数据才会被视为丢失:取整不同于以下属性的值 _FillValue
或 missing_value
不再被视为缺少值。
scipy.interpolate
¶
scipy.interpolate.PiecewisePolynomial 类已删除。它在Scipy 0.14.0中已被弃用,并且 scipy.interpolate.BPoly.from_derivatives
起到了临时替代的作用。
其他变化¶
Scipy现在使用 setuptools
因为它的体型,而不是普通的迪斯图尔特(Distutil)。这修复了 install_requires='scipy'
在 setup.py
依赖于Scipy的项目文件(详见Numpy问题gh-6551)。不过,它可能会影响Scipy本身的构建/安装方法的行为方式。请报告Scipy问题跟踪器上的任何意外行为。
PR #6240 更改了对 maxfun 选项输入 L-BFGS-B 中的基于例程的 scipy.optimize
模块。一个 L-BFGS-B 搜索由多个迭代组成,每个迭代由一个或多个函数求值组成。而旧的搜索策略在到达 maxfun 函数求值时,新策略允许当前迭代完成,尽管 maxfun 。
Qhull的捆绑副本在 scipy.spatial
子包已升级到版本2015.2。
ARPACK的捆绑副本位于 scipy.sparse.linalg
子包已升级到arpack-ng 3.3.0。
中的SuperLU捆绑副本 scipy.sparse
子包已升级到版本5.1.1。