SciPy 1.3.0发行说明¶
目录
-
-
scipy.io
改进scipy.linalg
改进scipy.signal
改进scipy.sparse
改进scipy.stats
改进
-
scipy.linalg
变化scipy.stats
变化
SciPy 1.3.0是5个月辛勤工作的顶峰。它包含许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。此版本中有一些API更改,如下所述。我们鼓励所有用户升级到此版本,因为有大量的错误修复和优化。在升级之前,我们建议用户检查他们自己的代码是否没有使用不推荐使用的SciPy功能(为此,请使用运行您的代码 python -Wd
并检查是否 DeprecationWarning
s)。我们的开发注意力现在将转移到1.3.x分支上的错误修复版本,以及在主分支上添加新功能。
此版本需要Python3.5+和NumPy 1.13.3或更高版本。
要在PyPy上运行,需要PyPy3 6.0+和NumPy 1.15.0。
此版本的亮点¶
三个新的
stats
函数,重写pearsonr
和Kolmogorov-Smirnov两样本检验的精确计算。中用于有界标量函数寻根器的新Cython API
scipy.optimize
。实实在在的
CSR
和CSC
稀疏矩阵索引性能改进。添加了对具有连续角速率和加速度的旋转插值的支持
RotationSpline
。
新功能¶
scipy.interpolate
改进¶
一个新班级 CubicHermiteSpline
并介绍了它的特点。它是一个分段三次插值器,匹配观测值和一阶导数。现有三次插值器 CubicSpline
, PchipInterpolator
和 Akima1DInterpolator
被划分为以下子类 CubicHermiteSpline
。
scipy.io
改进¶
对于属性关系文件格式(ARFF) scipy.io.arff.loadarff
现在支持关系属性。
scipy.io.mmread
现在可以解析空行的Matrix Market格式文件。
scipy.linalg
改进¶
添加了以下组件的包装器 ?syconv
例程,将三角矩阵分解所给出的对称矩阵转换为两个矩阵,反之亦然。
scipy.linalg.clarkson_woodruff_transform
现在使用一种利用稀疏性的算法。这可以为密集输入矩阵提供60-90%的加速比。真正稀疏的输入矩阵也应该受益于改进的草图算法,该算法现在可以正确地在 O(nnz(A))
时间到了。
添加了计算对称Fiedler矩阵和Fiedler伴随矩阵的新函数,名为 scipy.linalg.fiedler
和 scipy.linalg.fiedler_companion
,分别为。这些可用于寻根。
scipy.ndimage
改进¶
在某些情况下,高斯过滤的性能可能会提高一个数量级,这要归功于消除了对 np.polynomial
。这可能会影响 scipy.ndimage.gaussian_filter
例如。
scipy.optimize
改进¶
这个 scipy.optimize.brute
最小化程序获取了一个新关键字 workers
,它可以用来并行化计算。
中用于有界标量函数寻根器的Cython API scipy.optimize
在新模块中提供 scipy.optimize.cython_optimize
通过 cimport
。此接口可与 nogil
和 prange
循环遍历函数参数数组,从而比使用纯Python更快地求解根数组。
'interior-point'
现在是的默认方法 linprog
,以及 'interior-point'
现在使用SuiteSparse解决稀疏问题,只要有所需的SCRKIT(SCRICKIT-UFPACK和SCRICKIT-SPARSE)可用。在基准问题(GH-10026)上,执行时间减少了2-3倍是典型的。另外,一个新的 method='revised simplex'
已添加。它的速度或健壮性不如 method='interior-point'
,但它是一个更快、更健壮、同样准确的传统替身 method='simplex'
。
differential_evolution
现在可以使用 Bounds
类指定函数的优化参数的边界。
scipy.optimize.dual_annealing
与某些内部代码的矢量化相关的性能改进。
scipy.signal
改进¶
现在支持两种额外的离散化方法 scipy.signal.cont2discrete
: impulse
和 foh
。
scipy.signal.firls
现在使用更快的解算器。
scipy.signal.detrend
在某些情况下,现在具有较低的物理内存占用,这可以通过使用新的 overwrite_data
关键字参数。
scipy.signal.firwin
pass_zero
参数现在接受允许指定所需过滤类型的新字符串参数: 'bandpass'
, 'lowpass'
, 'highpass'
,以及 'bandstop'
。
scipy.signal.sosfilt
可能由于算法中全局解释器锁(GIL)的保留率较低而提高了性能。
scipy.sparse
改进¶
已将新关键字添加到 csgraph.dijsktra
这允许用户查询任何传入索引的最短路径,而不是每个传递的索引的最短路径。
scipy.sparse.linalg.lsmr
对于大型问题,性能大约提高了10%。
使用的算法提高了性能并减少了物理内存占用 scipy.sparse.linalg.lobpcg
。
CSR
和 CSC
稀疏矩阵奇特索引的性能有了很大的提高。
scipy.spatial
改进¶
scipy.spatial.ConvexHull
现在有一个 good
属性,该属性可与 QGn
Qhull选项,用于确定凸面的哪些外部面从外部查询点可见。
scipy.spatial.cKDTree.query_ball_point
已经过现代化,可以使用一些较新的Cython特性,包括GIL处理和异常转换。有一个问题,那就是 return_sorted=True
和标量查询是固定的,并且一个名为 return_length
已添加。 return_length
只计算返回的索引列表的长度,而不是每次都分配数组。
scipy.spatial.transform.RotationSpline
已添加,以启用具有连续角速率和加速度的旋转插值。
scipy.stats
改进¶
增加了计算Epps-Singleton检验统计量的新函数, scipy.stats.epps_singleton_2samp
可以应用于连续分布和离散分布。
新功能 scipy.stats.median_absolute_deviation
和 scipy.stats.gstd
(几何标准差)。这个 scipy.stats.combine_pvalues
方法现在支持 pearson
, tippett
和 mudholkar_george
p值组合方法。
这个 scipy.stats.ortho_group
和 scipy.stats.special_ortho_group
rvs(dim)
函数的算法从 O(dim^4)
实施到 O(dim^3)
这使得速度有了很大的提高, dim>100
。
重写了 scipy.stats.pearsonr
要使用更健壮的算法,请针对潜在的病理性输入提供有意义的异常和警告,并修复原始实现中至少五个单独报告的问题。
提高了系统的精确度 hypergeom.logcdf
和 hypergeom.logsf
。
增加了Kolmogorov-Smirnov(KS)双样本检验的精确计算,取代了以前对双边检验的近似计算 stats.ks_2samp 。还添加了一个单面、两个样本的KS测试,并添加了一个关键字 alternative
至 stats.ks_2samp 。
向后-不兼容的更改¶
scipy.interpolate
变化¶
函数来自 scipy.interpolate
(spleval
, spline
, splmake
, and spltopp
) and functions from scipy.misc
(bytescale
, fromimage
, imfilter
, imread
, imresize
, imrotate
, imsave
, imshow
, toimage
) have been removed. The former set has been deprecated since v0.19.0 and the latter has been deprecated since v1.0.0. Similarly, aliases from scipy.misc
(comb
, factorial
, factorial2
, factorialk
, logsumexp
, pade
, info
, source
, who
) which have been deprecated since v1.0.0 are removed. SciPy documentation for v1.1.0 可用于跟踪重新定位功能的新导入位置。
scipy.linalg
变化¶
为 pinv
, pinv2
,以及 pinvh
为了保持一致性,更改了默认的分界值(有关实际值,请参阅文档)。
scipy.optimize
变化¶
的默认方法 linprog
现在是 'interior-point'
。该方法的健壮性和速度是有代价的:解决方案可能不精确到机器精度,或者与约束定义的多面体的顶点不一致。要恢复到原始的单纯形方法,请包含参数 method='simplex'
。
scipy.stats
变化¶
在此之前, ks_2samp(data1, data2)
将运行双面测试并返回近似的p值。新的签名, ks_2samp(data1, data2, alternative="two-sided", method="auto")
默认情况下仍运行双面测试,但对于小样本返回精确的p值,对于大样本返回近似值。 method="asymp"
将等同于旧版本,但是 auto
是更好的选择。
其他变化¶
我们的教程增加了一个关于全局优化器的新部分。
已经有了一部改编的 stats.distributions
教程。
scipy.optimize
现在,将结果的收敛标志正确设置为 CONVERR
对于有界的标量函数寻根器来说,如果已经超过最大迭代次数, disp
为假,并且 full_output
是真的。
scipy.optimize.curve_fit
在以下情况下不再失败 xdata
和 ydata
数据类型不同;它们现在都自动转换为 float64
。
scipy.ndimage
功能包括 binary_erosion
, binary_closing
,以及 binary_dilation
现在需要一个整数值作为迭代次数,这可以减少许多报告的问题。
修复了情况下的法线近似 zero_method == "pratt"
在……里面 scipy.stats.wilcoxon
。
修复了与在内部设置成员变量的统计信息分布相关的错误概率、广播问题和线程安全 _argcheck()
。
scipy.optimize.newton
现在可以正确地引发 RuntimeError
在以下情况下:当使用默认参数时,如果获得值为零的导数(这是无法收敛的特例)。
工具链路线图草案现已发布,其中列出了包括Python版本、C标准和NumPy版本在内的兼容性计划。