SciPy 0.14.0 发布说明#

SciPy 0.14.0 是 8 个月努力工作的结晶。它包含了许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。此版本中进行了一些弃用和 API 更改,详情如下。建议所有用户升级到此版本,因为它包含了大量的错误修复和优化。此外,我们的开发重点将转移到 0.14.x 分支的错误修复版本,以及 master 分支的新功能添加。

此版本需要 Python 2.6、2.7 或 3.2-3.4 和 NumPy 1.5.1 或更高版本。

新功能#

scipy.interpolate 改进#

已添加了一个用于在规则网格上进行插值的新包装函数 scipy.interpolate.interpninterpn 支持任意维度的线性和最近邻插值,以及二维样条插值。

已添加了幂和伯恩斯坦多项式基中分段多项式的更快实现,作为 scipy.interpolate.PPolyscipy.interpolate.BPoly。新用户应优先使用这些功能,而非 scipy.interpolate.PiecewisePolynomial

scipy.interpolate.interp1d 现在接受非单调输入并对其进行排序。如果性能至关重要,可以使用新的 assume_sorted 关键字关闭排序。

已添加了 scipy.interpolate 中二元样条导数计算功能。

新类 scipy.interpolate.Akima1DInterpolator 实现了 H. Akima 提出的分段三次多项式插值方案。

已添加了在任意维度上对规则、不均匀间隔网格进行快速插值的功能,作为 scipy.interpolate.RegularGridInterpolator

scipy.linalg 改进#

新函数 scipy.linalg.dft 计算离散傅里叶变换的矩阵。

已添加了矩阵指数的条件数估计函数 scipy.linalg.expm_cond

scipy.optimize 改进#

已添加了一组用于优化的基准,可以使用 optimize.bench() 运行。

scipy.optimize.curve_fit 现在通过 absolute_sigma 关键字提供更可控的误差估计。

已添加了对向 optimize.minimize()optimize.minimize_scalar() 传递自定义最小化方法的支持,目前对于将 optimize.basinhopping() 与自定义局部优化程序结合使用特别有用。

scipy.stats 改进#

已添加了一个新类 scipy.stats.multivariate_normal,提供多元正态随机变量的功能。

scipy.stats 分布框架上做了大量工作。矩计算(主要是偏度和峰度)已修复和验证,所有示例现在都可以运行,并且许多针对单个分布的小型精度和性能改进已合并。

新函数 scipy.stats.anderson_ksamp 计算 k 样本 Anderson-Darling 检验,用于检验 k 个样本来自同一父总体的原假设。

scipy.signal 改进#

scipy.signal.iirfilter 和相关函数用于设计巴特沃斯、切比雪夫、椭圆和贝塞尔 IIR 滤波器,现在都内部使用零极点("zpk")格式,而不是转换为分子/分母格式。因此,生成的滤波器,尤其是高阶滤波器的精度显著提高。

Savitzky-Golay 滤波器已通过新函数 scipy.signal.savgol_filterscipy.signal.savgol_coeffs 添加。

新函数 scipy.signal.vectorstrength 计算一组事件的向量强度,这是一种相位同步的度量。

scipy.special 改进#

已添加了计算 Box-Cox 变换的函数 scipy.special.boxcoxscipy.special.boxcox1p

scipy.sparse 改进#

  • CSR、CSC 和 DOK 索引速度显著提升。

  • 当使用 Numpy >= 1.9(将于 2014 年 MM 月发布)时,稀疏矩阵在传递给 np.dotnp.multiply 和其他 ufunc 的参数时能正常工作。在更早的 Numpy 和 Scipy 版本中,此类操作的结果是未定义的,通常也出乎意料。

  • 稀疏矩阵不再限于 2^31 个非零元素。对于包含更多元素的矩阵,它们会自动切换使用 64 位索引数据类型。假设稀疏矩阵使用 int32 作为索引数据类型的用户代码将继续工作,除了这些大型矩阵。处理大型矩阵的代码需要接受 int32 或 int64 索引。

已弃用功能#

anneal#

全局最小化函数 scipy.optimize.anneal 已弃用。所有用户都应改用 scipy.optimize.basinhopping 函数。

scipy.stats#

randwcdfrandwppf 函数已弃用。所有用户都应改用特定于分布的 rvs 方法。

概率计算别名 zprobfprobksprob 已弃用。请改用相应分布的 sf 方法或直接使用 special 函数。

scipy.interpolate#

PiecewisePolynomial 类已弃用。

向后不兼容的更改#

scipy.special.lpmn#

lpmn 不再接受复数值参数。已添加了一个具有统一复杂分析行为的新函数 clpmn,应改用它。

scipy.sparse.linalg#

在广义特征值问题的情况下,特征向量被归一化为 2-范数单位向量,而不是遵循 LAPACK 归一化约定。

scipy.sparse.linalg 中已弃用的 UMFPACK 包装器因许可和安装问题已被删除。如果可用,scikits.umfpack 仍将透明地用于 spsolvefactorized 函数。否则,这些函数将改用 SuperLU。

scipy.stats#

已从 scipy.stats 中删除了已弃用的函数 glmonewaycmedian

stats.scoreatpercentile 现在返回一个数组而不是一个百分位数列表。

scipy.interpolate#

计算单调分段插值导数的 API 已更改:如果 pPchipInterpolator 对象,则 p.derivative(der) 返回一个表示 p 的导数的可调用对象。对于原地导数,请使用 __call__ 方法的第二个参数:p(0.1, der=2) 计算 px=0.1 处的二阶导数。

方法 p.derivatives 已被移除。

其他更改#

作者#

  • Marc Abramowitz +

  • Anders Bech Borchersen +

  • Vincent Arel-Bundock +

  • Petr Baudis +

  • Max Bolingbroke

  • François Boulogne

  • Matthew Brett

  • Lars Buitinck

  • Evgeni Burovski

  • CJ Carey +

  • Thomas A Caswell +

  • Pawel Chojnacki +

  • Phillip Cloud +

  • Stefano Costa +

  • David Cournapeau

  • David Menendez Hurtado +

  • Matthieu Dartiailh +

  • Christoph Deil +

  • Jörg Dietrich +

  • endolith

  • Francisco de la Peña +

  • Ben FrantzDale +

  • Jim Garrison +

  • André Gaul

  • Christoph Gohlke

  • Ralf Gommers

  • Robert David Grant

  • Alex Griffing

  • Blake Griffith

  • Yaroslav Halchenko

  • Andreas Hilboll

  • Kat Huang

  • Gert-Ludwig Ingold

  • James T. Webber +

  • Dorota Jarecka +

  • Todd Jennings +

  • Thouis (Ray) Jones

  • Juan Luis Cano Rodríguez

  • ktritz +

  • Jacques Kvam +

  • Eric Larson +

  • Justin Lavoie +

  • Denis Laxalde

  • Jussi Leinonen +

  • lemonlaug +

  • Tim Leslie

  • Alain Leufroy +

  • George Lewis +

  • Max Linke +

  • Brandon Liu +

  • Benny Malengier +

  • Matthias Kümmerer +

  • Cimarron Mittelsteadt +

  • Eric Moore

  • Andrew Nelson +

  • Niklas Hambüchen +

  • Joel Nothman +

  • Clemens Novak

  • Emanuele Olivetti +

  • Stefan Otte +

  • peb +

  • Josef Perktold

  • pjwerneck

  • poolio

  • Jérôme Roy +

  • Carl Sandrock +

  • Andrew Sczesnak +

  • Shauna +

  • Fabrice Silva

  • Daniel B. Smith

  • Patrick Snape +

  • Thomas Spura +

  • Jacob Stevenson

  • Julian Taylor

  • Tomas Tomecek

  • Richard Tsai

  • Jacob Vanderplas

  • Joris Vankerschaver +

  • Pauli Virtanen

  • Warren Weckesser

共有 80 人为本次发布做出了贡献。名字旁有“+”的人首次贡献了补丁。此姓名列表自动生成,可能不完全完整。

已关闭问题#

  • #1325: 在 scipy.cluster.hierarchy 的 dendrogram 函数中添加自定义轴关键字…

  • #1437: 负整数的 Pochhammer 符号错误 (Trac #910)

  • #1555: scipy.io.netcdf 泄漏文件描述符 (Trac #1028)

  • #1569: 稀疏矩阵使用 numpy.multiply() 进行逐元素乘法失败…

  • #1833: 稀疏矩阵仅限于 2^32 个非零元素 (Trac #1307)

  • #1834: scipy.linalg.eig 在给定 B 时不归一化特征向量…

  • #1866: invgamma 的统计 (Trac #1340)

  • #1886: stats.zipf 浮点警告 (Trac #1361)

  • #1887: Stats 连续分布 - 浮点警告 (Trac…

  • #1897: scoreatpercentile() 不处理空列表输入 (Trac #1372)

  • #1918: splint 返回错误结果 (Trac #1393)

  • #1949: kurtosistest 在 mstats 中因类型错误失败 (Trac #1424)

  • #2092: scipy.test 留下 darwin27compiled_catalog、cpp 和 so 文件…

  • #2106: stats ENH: 分布文档字符串中的形状参数 (Trac…

  • #2123: 稀疏矩阵在二元 ufunc 中的不良行为 (Trac #1598)

  • #2152: 修复 Python 3 上 gzip 的 mmio/fromfile (Trac #1627)

  • #2164: stats.rice.pdf(x, 0) 返回 nan (Trac #1639)

  • #2169: scipy.optimize.fmin_bfgs 不处理有边界的函数…

  • #2177: scipy.cluster.hierarchy.ClusterNode.pre_order 返回 IndexError…

  • #2179: coo.todense() 段错误 (Trac #1654)

  • #2185: scipy.ndimage.gaussian_filter*() 的精度受限 (Trac #1660)

  • #2186: scipy.stats.mstats.kurtosistest 在 1d 输入上崩溃 (Trac #1661)

  • #2238: hypergeom.cdf 的 p 值负数 (Trac #1719)

  • #2283: 插值例程中的升序 (Trac #1764)

  • #2288: mstats.kurtosistest 转换到浮点数不正确,并失败…

  • #2396: lpmn 在 |z| > 1 时结果错误 (Trac #1877)

  • #2398: ss2tf 返回 2D 数组而不是 1D (Trac #1879)

  • #2406: linkage 不接受 Unicode 字符串作为方法名 (Trac #1887)

  • #2443: IIR 滤波器设计不应在内部转换为 tf 表示

  • #2572: splu 的 solve 类方法返回对象损坏或错误…

  • #2667: stats 无限循环?

  • #2671: .stats.hypergeom 文档中 pmf 的注释错误

  • #2691: BUG scipy.linalg.lapack: potrf/ptroi 解释其 'lower'…

  • #2721: 允许在 scipy.sparse 切片中使用省略号

  • #2741: stats: 弃用并删除特殊函数的别名

  • #2742: stats 添加 rvs 到 rice 分布

  • #2765: bugs stats entropy

  • #2832: argrelextrema 在未找到峰值时返回两个空数组的元组…

  • #2861: scipy.stats.scoreatpercentile 在向量 per 上损坏

  • #2891: COBYLA 在违反约束时成功终止

  • #2919: 当前 master 分支的测试失败

  • #2922: ndimage.percentile_filter 忽略多维的 origin 参数…

  • #2938: 稀疏/密集矩阵原地操作因 __numpy_ufunc__ 失败

  • #2944: MacPorts 构建产生 40Mb 的构建警告

  • #2945: FAIL: test_random_complex (test_basic.TestDet)

  • #2947: FAIL: 测试 savgol_filter() 的一些微不足道的边界情况

  • #2953: Scipy Delaunay 三角剖分未定向

  • #2971: scipy.stats.mstats.winsorize 文档错误

  • #2980: 运行看起来完全有效的示例时出现问题

  • #2996: rv_discrete 的熵不正确?!

  • #2998: 修复 numpy 版本比较

  • #3002: python setup.py install 失败

  • #3014: stats.fisher_exact 中的错误

  • #3030: 使用 scipy.stats.distribution.entropy 计算相对熵时…

  • #3037: scipy.optimize.curve_fit 在输入为…时导致意外行为

  • #3047: mstats.ttest_rel axis=None,需要 masked array

  • #3059: BUG: 稀疏矩阵的切片返回不正确的 dtype

  • #3063: binned_statistics 中 range 关键字不正确

  • #3067: cumtrapz 未按预期工作

  • #3069: sinc

  • #3086: ‘stats’ 和 ‘mstats’ 之间的标准误差计算不一致

  • #3094: 在 scipy.misc 中添加 perm 函数并增强…

  • #3111: scipy.sparse.[hv]stack 不再遵守 dtype 参数

  • #3172: optimize.curve_fit 使用与 optimize.leastsq 不同的命名约定

  • #3196: scipy.stats.mstats.gmean 实际上不接受 dtype

  • #3212: csr_matrix 的点积导致段错误

  • #3227: broyden1 中当初始猜测为正确值时出现 ZeroDivisionError…

  • #3238: lbfgsb 输出不被 disp=0 抑制

  • #3249: 稀疏矩阵 min/max/etc 不支持 axis=-1

  • #3251: cdist 在 'sqeuclidean' 度量下的性能问题

  • #3279: logm 对于奇异矩阵失败

  • #3285: signal.chirp(method='hyp') 不允许双曲上扫

  • #3299: 内存泄漏: fmin_tnc

  • #3330: 当前 master 分支的测试失败

  • #3345: scipy 和/或 numpy 更改导致其他测试失败…

  • #3363: splu 不适用于非向量输入

  • #3385: expit 对大参数处理不佳

  • #3395: specfun.f 无法与 MinGW 编译

  • #3399: scipy.cluster.hierarchy.linkage 中的错误消息错误

  • #3404: interpolate._ppoly 无法与 MinGW 构建

  • #3412: signal 中的测试失败

  • #3466: `scipy.sparse.csgraph.shortest_path` 不适用于 `scipy.sparse.csr_matrix``lil_matrix`

拉取请求#

  • #442: ENH: sparse: 启用 64 位索引数组 & nnz > 2**31

  • #2766: DOC: 移除 doc/seps/technology-preview.rst

  • #2772: TST: stats: 为 stats.wilcoxon 添加了回归测试。关闭…

  • #2778: 清理 stats._support,关闭统计审查问题

  • #2792: BUG io: 修复 netcdf 变量的文件描述符关闭问题

  • #2847: Rice 分布:扩展到 b=0,添加显式 rvs 方法。

  • #2878: [stats] 修复 dweibull 分布高阶矩的公式

  • #2904: ENH: zipf 分布的矩

  • #2907: ENH: 为 Travis 运行添加 coveralls.io 的覆盖率信息。

  • #2932: BUG+TST: dia_matrix 的 setdiag 实现 (Close #2931)…

  • #2942: Eclipse PyDev 静态代码分析指出的一些小修复

  • #2946: ENH: 允许 interp1d 中的非单调输入

  • #2986: BUG: runtests: 运行测试时从根目录切换目录

  • #2987: DOC: linalg: 不推荐 np.linalg.norm

  • #2992: ENH: 为 dijkstra 计算添加“limit”参数

  • #2995: ENH: 使用 int shape

  • #3006: DOC: stats: 在文档字符串中添加日志基数说明

  • #3007: DEP: stats: 弃用 randwppf 和 randwcdf

  • #3008: 修复 mstats.kurtosistest,并测试 skewtest/normaltest 的覆盖率

  • #3009: 微小的 ReST 拼写错误

  • #3010: 将 scipy.optimize.Result 添加到 API 文档

  • #3012: 更正文档错误

  • #3052: PEP-8 一致性改进

  • #3064: 分箱统计

  • #3068: 修复 Issue #3067 修复 cumptrapz 在引发异常时…

  • #3073: 具有 1 个字符标称值的 Arff 读取器

  • #3074: 一些维护工作

  • #3080: 审查和清理所有 Box-Cox 函数

  • #3083: Bug: 如果未找到区域,应返回 0

  • #3085: BUG: 在 IIR 滤波器设计中使用 zpk 以提高精度

  • #3101: 重构 stats 测试

  • #3112: ENH: 实现 1D Akima 插值

  • #3123: MAINT: 更容易从切片创建范围

  • #3124: imread 和 imsave 的文件对象支持

  • #3126: pep8ify stats/distributions.py

  • #3134: MAINT: 将 distributions.py 拆分为三个文件

  • #3138: 清理离散分布的测试

  • #3155: special: 处理 pdtr、pdtrc 和 pdtrik 中 lambda=0 的边缘情况

  • #3156: 将 optimize.Result 重命名为 OptimizeResult

  • #3166: BUG: 使 curve_fit() 适用于 array_like 输入。关闭 gh-3037。

  • #3170: 修复 numpy 版本检查

  • #3175: 使用 numpy sinc

  • #3177: 更新 numpy 版本警告,移除 oldnumeric 导入

  • #3178: DEP: 移除已弃用的 umfpack 包装器。关闭 gh-3002。

  • #3179: DOC: 添加 BPoly 到文档

  • #3180: 运行 stats.test() 时抑制警告

  • #3181: 更改 mstats 中的 sem 函数以匹配 stats

  • #3182: 使 weave 测试行为正常

  • #3183: ENH: 将 k 样本 Anderson-Darling 检验添加到 stats 模块

  • #3186: 修复 stats.scoreatpercentile

  • #3187: DOC: 使 curve_fit 命名与 leastsq 相同

  • #3201: 为 dendrogram 函数添加了 axis 关键字

  • #3207: 使 stats.distributions 文档字符串中的示例可运行

  • #3218: BUG: integrate: 修复 "vode" 中的带状雅可比处理和…

  • #3222: BUG: 限制 special.nctdtr 中的输入范围

  • #3223: 修复 numpy master 的测试错误

  • #3224: 修复 sparsetools 中的 int32 溢出

  • #3228: DOC: tf2ss zpk2ss 注意控制器规范形式

  • #3234: 为滤波器设计 *ord 函数添加“参见”链接和示例图

  • #3235: 更新了 buttord 函数使其与其他函数保持一致…

  • #3239: 修正 pchip 插值的文档

  • #3240: DOC: 修复 BPoly 文档字符串中的 ReST 错误

  • #3241: RF: 在不写入的情况下检查文件对象的写入属性

  • #3243: stats 中一点维护工作

  • #3245: BUG/ENH: stats: 使冻结分布持有单独的实例

  • #3247: ENH 函数在一些稀疏矩阵中返回每行/列的非零数

  • #3248: ENH 更高效的稀疏 min/max 带轴

  • #3252: 快速平方欧几里德距离

  • #3253: FIX 支持稀疏归约方法的 axis=-1 和 -2

  • #3254: TST 稀疏矩阵操作的非规范输入的测试

  • #3272: BUG: sparse: 修复 dia_matrix.setdiag 中的错误

  • #3278: 运行 paver sdist 时也生成 tar.xz

  • #3286: DOC: 更新 0.14.0 发布说明。

  • #3289: TST: 移除测试中不安全的 mktemp 使用

  • #3292: MAINT: 修复 stats.distributions.__all__ 的向后不兼容更改

  • #3293: ENH: signal: 允许“hyperbolic”中的频率上扫…

  • #3302: ENH: 为 stats.mstats.gmean 和 stats.mstats.hmean 添加 dtype 参数

  • #3307: DOC: 在 tf2zpk 中添加关于不同 ba 形式的注释

  • #3309: 增强 scipy.stats.mstats.winsorize 文档

  • #3310: DOC: 澄清 mmio 文档字符串中的矩阵与数组

  • #3314: BUG: 修复 Python3 下 scipy.io.mmread() 读取 gzipped 文件的错误

  • #3323: ENH: 任意维度规则网格上的高效插值

  • #3332: DOC: 清理 scipy.special 文档

  • #3335: ENH: 提高 nanmedian 性能

  • #3347: BUG: 修复 stats.fisher_exact 中 np.max 的使用

  • #3356: ENH: sparse: 通过 Cython 加速 LIL 索引 + 赋值

  • #3357: 修复“imresize 不适用于 size = int”

  • #3358: MAINT: 将 AkimaInterpolator 重命名为 Akima1DInterpolator

  • #3366: WHT: sparse: 重新缩进 dsolve/*.c *.h

  • #3367: BUG: sparse/dsolve: 修复 superlu 中的密集矩阵 fortran 顺序错误…

  • #3369: ENH minimize, minimize_scalar: 添加对用户提供的支持…

  • #3371: scipy.stats.sigmaclip 未出现在 html 文档中。

  • #3373: BUG: sparse/dsolve: 检测 superlu 中的无效 LAPACK 参数…

  • #3375: ENH: sparse/dsolve: 使 splu 和 spilu 的 L 和 U 因子…

  • #3377: MAINT: 使 travis 构建一个针对 Numpy 1.5 的目标

  • #3378: MAINT: fftpack: 移除在一些测试中对 'import *' 的使用…

  • #3381: MAINT: 替换 np.isinf(x) & (x>0) -> np.isposinf(x) 以避免…

  • #3383: MAINT: 在没有 float96 的平台上跳过 float96 测试

  • #3384: MAINT: 将 pyflakes 添加到 Travis-CI

  • #3386: BUG: expit 的稳定评估

  • #3388: BUG: SuperLU: 修复 dlamch 缺失的声明

  • #3389: BUG: sparse: 需要时将 64 位索引安全地向下转换为 intp

  • #3390: BUG: 非线性求解器不会被幸运的猜测混淆

  • #3391: TST: 修复由于 np.matrix.sum() 中 axis=-1,-2 的使用导致的稀疏测试错误。

  • #3392: BUG: sparse/lil: 修复 fused type 查找中的 Cython 错误

  • #3393: BUG: sparse/compressed: 解决早期 np.unique 中的错误…

  • #3394: BUG: 允许 ClusterNode.pre_order() 用于非根节点

  • #3400: BUG: cluster.linkage ValueError 拼写错误

  • #3402: BUG: special: 在 specfun.f 中,将 CMPLX 的使用替换为 DCMPLX,…

  • #3408: MAINT: sparse: Numpy 1.5 兼容性修复

  • #3410: MAINT: interpolate: 修复 _ppoly 中的 blas 定义

  • #3411: MAINT: interpolate 中的 Numpy 1.5 修复

  • #3413: 修复旧版本 numpy 的更多测试问题

  • #3414: TST: signal: 放宽滤波器测试中的一些误差容限…。

  • #3415: MAINT: tools: 自动关闭问题 + 发布拉取请求列表…

  • #3440: MAINT: 手动包装 sparsetools 而非通过 SWIG

  • #3460: TST: 以二进制模式打开图像文件

  • #3467: BUG: 修复 csgraph.shortest_path 中的验证