SciPy 0.19.0发行说明¶
目录
SciPy 0.19.0是7个月辛勤工作的顶峰。它包含许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。此版本中有许多弃用和API更改,如下所述。我们鼓励所有用户升级到此版本,因为有大量的错误修复和优化。此外,我们的开发注意力现在将转移到0.19.x分支上的错误修复版本,以及在主分支上添加新功能。
此版本需要Python 2.7或3.4-3.6以及NumPy 1.8.2或更高版本。
此版本的亮点包括:
统一的外来函数接口层,
scipy.LowLevelCallable。中的通用函数的标量、类型化版本的Cython API
scipy.special模块,通孔 cimport scipy.special.cython_special 。
新功能¶
国外函数接口的改进¶
scipy.LowLevelCallable provides a new unified interface for wrapping low-level compiled callback functions in the Python space. It supports Cython imported "api" functions, ctypes function pointers, CFFI function pointers, PyCapsules, Numba jitted functions and more. See gh-6509 有关详细信息,请参阅。
scipy.linalg 改进¶
该函数 scipy.linalg.solve 又获得了两个关键字 assume_a 和 transposed 。底层的LAPACK例程被“专家”版本所取代,现在还可以用来求解对称的、厄米特的和正定的系数矩阵。此外,病态矩阵现在会导致发出带有估计条件数信息的警告。年长的 sym_pos 关键字是出于向后兼容性的原因保留的,但是它与使用 assume_a='pos' 。此外, debug 关键字,该关键字没有任何功能,只打印 overwrite_<a, b> 值,已弃用。
该函数 scipy.linalg.matrix_balance 是为了使用LAPACK xGEBAL例程系列执行所谓的矩阵平衡而添加的。这可用于通过对角线相似变换近似相等行和列规范。
功能 scipy.linalg.solve_continuous_are 和 scipy.linalg.solve_discrete_are 有更稳定的数值算法。这些函数还可以求解广义代数矩阵Riccati方程。此外,两人都获得了 balanced 用于打开和关闭平衡的关键字。
scipy.spatial 改进¶
scipy.spatial.SphericalVoronoi.sort_vertices_of_regions 已经用Cython重写,以提高性能。
scipy.spatial.SphericalVoronoi 可以处理大于200k的点(至少1000万),并且有更高的性能。
该函数 scipy.spatial.distance.directed_hausdorff 来计算有向Hausdorff距离。
count_neighbors 一种方法 scipy.spatial.cKDTree gained an ability to perform weighted pair counting via the new keywords weights and cumulative. See gh-5647 有关详细信息,请参阅。
scipy.spatial.distance.pdist 和 scipy.spatial.distance.cdist 现在支持非双重自定义指标。
scipy.ndimage 改进¶
回调函数C API支持Python2.7中的PyCapsules
多维过滤器现在允许对不同的轴具有不同的外推模式。
scipy.optimize 改进¶
这个 scipy.optimize.basinhopping 全局最小化器获得新的关键字, seed ,其可用于设定随机数生成器的种子并获得可重复最小化。
关键字 sigma 在……里面 scipy.optimize.curve_fit 被重载,以便也接受数据中的误差协方差矩阵。
scipy.signal 改进¶
该函数 scipy.signal.correlate 和 scipy.signal.convolve 有一个新的可选参数 method 。的默认值 auto 估计两种计算方法中最快的一种,直接方法和傅里叶变换方法。
增加了选择卷积/相关方法的新函数, scipy.signal.choose_conv_method 如果在许多相同大小的阵列上执行卷积或相关,则这可能是合适的。
添加了新的函数来计算输入信号的复数短时傅立叶变换,并反转变换以恢复原始信号: scipy.signal.stft 和 scipy.signal.istft 。此实现还修复了之前不正确的 scipy.signal.spectrogram 当请求复杂的输出数据时。
该函数 scipy.signal.sosfreqz 用来计算二阶截面的频率响应。
该函数 scipy.signal.unit_impulse 被添加以方便地生成脉冲函数。
该函数 scipy.signal.iirnotch 用于设计可用于从信号中去除频率分量的二阶IIR陷波滤波器。双重功能 scipy.signal.iirpeak 相加来计算二阶红外峰(共振)过滤的系数。
该函数 scipy.signal.minimum_phase 增加了将线性相位FIR滤波器转换为最小相位的方法。
功能 scipy.signal.upfirdn 和 scipy.signal.resample_poly 当n>1时,当在一些n维数组上操作时,现在基本上更快。在沿要滤波的轴的数组大小较小(<1k个样本左右)的情况下,实现了计算时间的最大减少。
scipy.fftpack 改进¶
快速傅立叶变换例程现在接受 np.float16 输入并将其向上转换为 np.float32 。以前,它们会引发错误。
scipy.cluster 改进¶
方法: "centroid" 和 "median" 的 scipy.cluster.hierarchy.linkage 已经大大加快了速度。长期存在的使用问题 linkage 关于大型输入数据(超过16 GB)的问题已得到解决。
scipy.sparse 改进¶
功能 scipy.sparse.save_npz 和 scipy.sparse.load_npz ,为一些稀疏格式提供了简单的序列化。
这个 prune 类的方法 bsr_matrix , csc_matrix ,以及 csr_matrix 已更新,可在特定条件下重新分配后备阵列,从而减少内存使用。
这些方法 argmin 和 argmax 被添加到班级中 coo_matrix , csc_matrix , csr_matrix ,以及 bsr_matrix 。
新功能 scipy.sparse.csgraph.structural_rank 计算具有给定稀疏模式的图的结构秩。
新功能 scipy.sparse.linalg.spsolve_triangular 求解具有三角形左侧矩阵的稀疏线性系统。
scipy.special 改进¶
来自的泛函的标量、类型化版本 scipy.special 在Cython空间中可通过 cimport 从新模块 scipy.special.cython_special 。可以预期,这些标量函数比用于标量参数的通用函数要快得多。请参阅 scipy.special 有关详细信息,请参阅教程。
功能提供了对特殊功能错误的更好控制 scipy.special.geterr 和 scipy.special.seterr 以及上下文管理器 scipy.special.errstate 。
正交多项式根函数的名称已更改为与与正交多项式相关的其他函数一致。例如, scipy.special.j_roots 已更名为 scipy.special.roots_jacobi 为了与相关功能保持一致 scipy.special.jacobi 和 scipy.special.eval_jacobi 。为了保持向后兼容性,旧名称被保留为别名。
Wright Omega函数实现为 scipy.special.wrightomega 。
scipy.stats 改进¶
该函数 scipy.stats.weightedtau 已添加。它提供了肯德尔τ的加权版本。
新班级 scipy.stats.multinomial 实现多项式分布。
新班级 scipy.stats.rv_histogram 从入库数据样本中构造具有分段线性CDF的连续单变量分布。
新班级 scipy.stats.argus 实现Argus分发版。
scipy.interpolate 改进¶
新班级 scipy.interpolate.BSpline 表示样条曲线。 BSpline 对象包含结和系数,并且可以对样条线求值。格式与FITPACK一致,因此可以这样做,例如::
>>> t, c, k = splrep(x, y, s=0)
>>> spl = BSpline(t, c, k)
>>> np.allclose(spl(x), y)
spl* 函数, scipy.interpolate.splev , scipy.interpolate.splint , scipy.interpolate.splder 和 scipy.interpolate.splantider ,两者都接受 BSpline 对象和 (t, c, k) 用于向后兼容的元组。
对于多维样条曲线, c.ndim > 1 , BSpline 目标与分段多项式一致, scipy.interpolate.PPoly 。这意味着 BSpline 对象不会立即与 scipy.interpolate.splprep ,和一个 不能 做 >>> BSpline(*splprep([x, y])[0]) 。请查阅 scipy.interpolate 测试套件,获取精确等价的示例。
在新代码中,首选使用 scipy.interpolate.BSpline 对象,而不是操作 (t, c, k) 直接使用元组。
新功能 scipy.interpolate.make_interp_spline 在给定数据点和边界条件的情况下,构造插值样条。
新功能 scipy.interpolate.make_lsq_spline 构造给定数据点的最小二乘样条逼近。
scipy.integrate 改进¶
现在 scipy.integrate.fixed_quad 支持向量值函数。
不推荐使用的功能¶
scipy.interpolate.splmake , scipy.interpolate.spleval 和 scipy.interpolate.spline 都已弃用。使用的格式 splmake/spleval 与以下内容不一致 splrep/splev 这让用户感到困惑。
scipy.special.errprint 已弃用。中提供了改进的功能 scipy.special.seterr 。
呼叫 scipy.spatial.distance.pdist 或 scipy.spatial.distance.cdist 不推荐使用所选指标不需要的参数。另外,指标 "old_cosine" 和 "old_cos" 都已弃用。
向后不兼容的更改¶
已弃用的 scipy.weave 已删除子模块。
scipy.spatial.distance.squareform 现在返回与输入相同数据类型的数组,而不是始终返回浮点64。
scipy.special.errprint 现在返回布尔值。
该函数 scipy.signal.find_peaks_cwt 现在返回数组而不是列表。
scipy.stats.kendalltau 现在,如果输入包含纽带,则计算正确的p值。p值也与由 scipy.stats.mstats.kendalltau 和R。如果输入不包含纽带,则不会更改w.r.t。以前的实现。
该函数 scipy.linalg.block_diag 将不再忽略零大小矩阵。相反,它将插入适当大小的零行或列。有关更多详细信息,请参阅GH-4908。
其他变化¶
SciPy轮子现在将报告它们对 numpy 在所有平台上。之所以进行此更改,是因为Numpy轮可用,也因为pip升级行为终于变得更好了(使用 --upgrade-strategy=only-if-needed 为 pip >= 8.2 ;该行为将成为下一个主要版本的默认行为 pip )。
返回的数值 scipy.interpolate.interp1d 使用 kind="cubic" 和 "quadratic" 相对于以前的Scipy版本可能会发生变化。如果您的代码依赖于特定的数值(即,插值器的实现细节),则可能需要仔细检查结果。