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版本在内的兼容性计划。