SciPy 1.2.0发行说明¶
目录
Science Py 1.2.0是6个月辛勤工作的顶峰。它包含许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。此版本中有许多弃用和API更改,如下所述。我们鼓励所有用户升级到此版本,因为有大量的错误修复和优化。在升级之前,我们建议用户检查他们自己的代码是否没有使用不推荐使用的SciPy功能(为此,请使用运行您的代码 python -Wd
并检查是否 DeprecationWarning
s)。我们的开发注意力现在将转移到1.2.x分支上的错误修复版本,以及在主分支上添加新功能。
此版本需要Python 2.7或3.4+和NumPy 1.8.2或更高版本。
注解
这将是最后一个支持Python2.7的SciPy版本。因此,1.2.x系列将是一个长期支持(LTS)版本;我们将在2020年1月1日之前修复错误。
要在PyPy上运行,需要PyPy3 6.0+和NumPy 1.15.0。
此版本的亮点¶
用新的求解器改进一维求根,
toms748
和新的统一接口,root_scalar
新的
dual_annealing
随机搜索与局部确定性搜索相结合的优化方法一种新的优化算法,
shgo
(单纯同调全局优化),用于无导数优化问题中提供了一种新的基于四元数的变换类别
scipy.spatial.transform
新功能¶
scipy.ndimage
改进¶
添加了适当的样条系数计算,用于 mirror
, wrap
,以及 reflect
模式: scipy.ndimage.rotate
。
scipy.fftpack
改进¶
现在支持DCT-IV、DST-IV、DCT-I和DST-I正交化 scipy.fftpack
。
scipy.interpolate
改进¶
scipy.interpolate.pade
现在接受分子顺序的新参数。
scipy.cluster
改进¶
scipy.cluster.vq.kmeans2
得到了一种新的初始化方法,kmeans++。
scipy.special
改进¶
该函数 softmax
已添加到 scipy.special
。
scipy.optimize
改进¶
给出了一维非线性求解器的统一界面 scipy.optimize.root_scalar
,类似于 scipy.optimize.root
多维解算器的界面。 scipy.optimize.root_scalar(f, bracket=[a ,b], method="brenth")
相当于 scipy.optimize.brenth(f, a ,b)
。如果没有 method
如果指定,将根据括号和可用的衍生品数量选择合适的一个。
用于在封闭区间内寻根的Alefeld、Potra和SHI的所谓算法748被添加为 scipy.optimize.toms748
。这提供了保证收敛到根,每个函数的收敛速度估计大约为1.65(对于行为足够好的函数)。
differential_evolution
现在有了 updating
和 workers
关键字。第一个选择是连续更新最佳解向量(默认设置),还是每次生成一次。持续更新可以实现更快的收敛。这个 workers
关键字接受一个 int
或类似于映射的可调用函数,并并行化求解器(具有每代更新一次的副作用)。提供一个 int
评估N个平行部分中的试验解决方案。提供类似映射的可调用函数允许使用其他并行化方法(例如 mpi4py
,或 joblib
)以供使用。
dual_annealing
(及 shgo
下面)是一种强大的新的通用全局优化(GO)算法。 dual_annealing
使用两个退火过程来加速收敛到目标数学函数的全局最小值。第一个退火过程控制随机马尔可夫链搜索,第二个退火过程控制确定性最小化。因此,双重退火算法是一种有效利用随机搜索和局部确定性搜索的混合算法。
shgo
(单纯同调全局优化)是一种适用于求解黑盒和无导数优化(DFO)问题的类似算法。该算法一般在有限时间内收敛到全局解。对于非线性不等式和等式约束,收敛性是成立的。除了返回全局最小值之外,该算法还返回在每次迭代之后找到的任何其他全局和局部最小值。这使得它对于探索域中的解决方案非常有用。
scipy.optimize.newton
现在可以接受标量或数组。
MINPACK
使用现在是线程安全的,因此 MINPACK
+回调可以在多个线程上使用。
scipy.signal
改进¶
数字过滤设计功能现在包括一个指定采样率的参数。以前,数字滤波器只能使用归一化频率指定,但不同的功能使用不同的标度(例如,0到1用于 butter
VS 0到π,用于 freqz
),导致错误和念力。使用 fs
参数后,现在可以将普通频率直接输入到函数中,并在内部进行归一化处理。
find_peaks
并且如果峰值的属性具有意想不到的值(例如显著程度为0),则相关函数不再引发异常。一个 PeakPropertyWarning
取而代之的是给予。
新的关键字参数 plateau_size
已添加到 find_peaks
。 plateau_size
可用于基于峰的平顶的长度来选择峰。
welch()
和 csd()
中的方法 scipy.signal
现在支持计算平均PSD的中位数,使用 average='mean'
关键字。
scipy.sparse
改进¶
这个 scipy.sparse.bsr_matrix.tocsr
方法现在直接实现,而不是通过COO格式转换,并且 scipy.sparse.bsr_matrix.tocsc
方法现在也通过CSR转换而不是COO路由。现在,这两种转换的效率都提高了。
SuperLU或UMFPACK求解器在中非规范格式的矩阵上崩溃的问题 scipy.sparse.linalg
已经修好了。如果需要,解算器包装器会在调用SuperLU或UMFPACK解算器之前规范化矩阵。
这个 largest
选项: scipy.sparse.linalg.lobpcg() 被修复为具有正确的(和预期的)行为。特征值的顺序与ARPACK解算器一致 (eigs()
),即对于最小的特征值是递增的,对于最大的特征值是递减的。
这个 scipy.sparse.random
函数现在速度更快,并且还支持整数值和复数值,方法是将适当的值传递给 dtype
论点。
scipy.spatial
改进¶
该函数 scipy.spatial.distance.jaccard
已修改为返回0,而不是 np.nan
当比较两个全零向量时。
对詹森·香农距离(散度的平方根)的支持已添加到 scipy.spatial.distance.jensenshannon
。
向函数添加了一个可选关键字 scipy.spatial.cKDTree.query_ball_point() 对返回的索引进行排序或不排序。不对索引进行排序会加快调用速度。
中提供了一种新的基于四元数的变换类别 scipy.spatial.transform
,包括旋转的球面线性插值 (Slerp
)、四元数之间的转换、欧拉角以及常规旋转和反转功能 (spatial.transform.Rotation ),以及3D旋转的均匀随机采样 (spatial.transform.Rotation.random )。
scipy.stats
改进¶
现在支持Yeo-Johnson功率变换 (yeojohnson
, yeojohnson_llf
, yeojohnson_normmax
, yeojohnson_normplot
)。与Box-Cox变换不同,Yeo-Johnson变换可以接受负值。
在新函数中增加了一种仅基于密度对随机变量进行采样的通用方法 rvs_ratio_uniforms
。
Yule-Simon分布 (yulesimon
),这是一个新的离散概率分布。
stats
和 mstats
现在可以使用一种新的回归方法, siegelslopes
,一种稳健的线性回归算法
scipy.stats.gaussian_kde
现在具有处理加权样本的能力,应该会在性能上有一定的改进
现在支持Levy稳定参数估计、PDF和CDF计算 scipy.stats.levy_stable
。
布伦纳-蒙泽尔测试现在可以作为 brunnermunzel
在……里面 stats
和 mstats
。
scipy.linalg
改进¶
scipy.linalg.lapack
现在为上三角、下三角、对称或厄米特矩阵提供了使用矩形满填充存储(RFP)的LAPACK例程;现在还提供了上梯形脂肪矩阵RZ分解例程。
不推荐使用的功能¶
功能 hyp2f0
, hyp1f2
和 hyp3f0
在……里面 scipy.special
已经被弃用了。
向后-不兼容的更改¶
现在需要LAPACK版本3.4.0或更高版本。不再支持使用Apple Accelerate构建。
该函数 scipy.linalg.subspace_angles(A, B)
现在可以为所有角度提供正确的结果。在此之前,该函数只返回大于π/4的角度的正确值。
已删除对Bento构建系统的支持。便携已经有几年没有维护了,也没有很好的Python3或轮子支撑,所以是时候把它移除了。
所需的签名 scipy.optimize.lingprog method=simplex
回调函数已更改。在迭代开始之前,单纯形求解器首先将问题转换为标准形式,该标准形式通常不具有与用户定义的问题相同的变量或约束。以前,单纯形求解器会向用户指定的回调函数传递几个单独的参数,如当前解向量 xk
,对应于这个标准形式的问题。不幸的是,没有记录标准形式问题和用户定义问题之间的关系,从而限制了传递给回调函数的信息的效用。
除了许多错误修复更改之外,单纯形求解器现在还将用户指定的回调函数传递给 OptimizeResult
对象,该对象包含与用户定义的问题直接对应的信息。在将来的版本中,此 OptimizeResult
对象可以扩展为包括附加信息,诸如对应于标准形式问题的变量以及关于标准形式问题和用户定义问题之间的关系的信息。
该计划的实施 scipy.sparse.random
已更改,这会影响为这两个对象返回的数值 sparse.random
和 sparse.rand
一些矩阵形状和给定的种子。
scipy.optimize.newton
在对收敛产生负面影响的情况下,将不再使用哈雷法。