SciPy 1.0.0 发行说明#

我们非常高兴地宣布 SciPy 1.0 发布,这距离 0.1 版本问世已有 16 年之久。这是一段漫长且富有成效的旅程,我们期待未来会有更多令人兴奋的新功能和版本发布。

为什么是现在发布 1.0?#

版本号应该反映一个项目的成熟度——而 SciPy 长期以来一直是一个成熟且稳定的库,在生产环境中得到了广泛应用。从这个角度来看,1.0 版本号早已逾期。

近期我们实现了一些关键的项目目标,包括技术层面(如 Windows 轮子文件和持续集成)和组织层面(治理结构、行为准则和路线图)。

我们中的许多人都有点完美主义,因此不愿将某个版本称为“1.0”,因为这可能暗示它已经“完成”或者“我们对其 100% 满意”。这在许多开源项目中很常见,但这并不意味着它是正确的。我们向自己承认它并不完美,仍有一些被遗忘的角落(可能永远如此)。尽管如此,SciPy 对其用户极其有用,平均拥有高质量的代码和文档,并提供了 1.0 标签所蕴含的稳定性和向后兼容性保证。

一些历史与视角#

  • 2001 年:SciPy 首次发布

  • 2005 年:过渡到 NumPy

  • 2007 年:创建 scikits

  • 2008 年:添加 scipy.spatial 模块并加入首个 Cython 代码

  • 2010 年:转向每 6 个月一次的发布周期

  • 2011 年:SciPy 开发迁移至 GitHub

  • 2011 年:支持 Python 3

  • 2012 年:添加稀疏图模块和统一优化接口

  • 2012 年:移除 scipy.maxentropy

  • 2013 年:使用 TravisCI 进行持续集成

  • 2015 年:为 BLAS/LAPACK 添加 Cython 接口及基准测试套件

  • 2017 年:通过 scipy.LowLevelCallable 添加统一的 C API;移除 scipy.weave

  • 2017 年:SciPy 1.0 发布

Pauli Virtanen 是 SciPy 的终身仁慈独裁者 (BDFL)。他说道:

坦率地说,我们很久以前就可以发布 SciPy 1.0 了,所以我很高兴我们终于在现在发布了。该项目有着悠久的历史,多年来它作为一个软件项目也逐渐成熟。我相信它已充分证明了自己的价值,足以支撑一个以 1 开头的版本号。

自 15 多年前构思以来,SciPy 很大程度上是由科学家编写并为科学家服务的,旨在提供他们所需的一系列基础工具。随着时间的推移,活跃于开发的人员经历了更替,我们也进化到了更系统化的开发方法。尽管如此,这种内在的驱动力始终未变,我认为它也将继续推动项目未来向前发展。这一切都很好,因为 1.0 之后不久就是 1.1。

Travis Oliphant 是 SciPy 的创始人之一。他说道:

我很荣幸能为 SciPy 1.0 的发布向 SciPy 开发者和整个 SciPy 社区致以祝贺。这次发布代表了许多人的梦想,由一群坚定的先驱者在近 20 年的时间里耐心地追求着。在这段时间里,数百人付出了广泛而持续的努力。从最初的讨论到编码和打包工作,从文档编写到大规模的会议和社区建设,SciPy 的努力已成为一种全球现象,我很荣幸能参与其中。

1997 年,当我作为一个刚刚爱上 Python 表达能力和扩展能力的年轻研究生加入 Python 社区时,SciPy 的想法就已经在多个人的脑海中了。互联网刚刚开始将志同道合的数学家和科学家汇聚到新生的电子互联社区。1998 年,在 matrix-SIG 邮件列表上,Paul Barrett、Joe Harrington、Perry Greenfield、Paul Dubois、Konrad Hinsen、David Ascher 等人进行了深入讨论。这种讨论激励我在 1998 和 1999 年推迟了博士学业,花费大量时间为 Python 编写扩展模块,这些模块大多封装了经过实战检验的 Fortran 和 C 代码,使其可供 Python 用户使用。这项工作吸引了 Robert Kern、Pearu Peterson 和 Eric Jones 等人的帮助,他们在 2000 年加入了我的行列,到 2001 年,第一个 SciPy 版本已准备就绪。那是在 GitHub 简化协作和他人输入之前很久,当时“patch”命令和电子邮件是改进项目的手段。

自那时起,数百人花费了大量时间改进 SciPy 库,围绕该库的社区也急剧增长。大约在 2010 年,我不再能积极参与 SciPy 库的开发。幸运的是,在那时,Pauli Virtanen 和 Ralf Gommers 在 David Cournapeau、Evgeni Burovski、Josef Perktold 和 Warren Weckesser 等数十位关键贡献者的支持下加快了开发步伐。虽然在过去的 7 年里我只能远距离关注 SciPy 的发展,但我从未失去对这个项目和社区驱动开发理念的热爱。即便现在,我仍被一种愿望所驱动,那就是帮助维持不仅是 SciPy 库,还包括许多其他附属和相关的开源项目的持续发展。我非常高兴 SciPy 能掌握在一个由天才开发者组成的全球社区手中,他们将确保 SciPy 始终是草根、社区驱动开发如何取得成功的典范。

Fernando Perez 提供了更广泛的社区视角:

早在 2001 年我还是物理系研究生时,SciPy 库的雏形以及围绕它建立的令人难以置信的社区(尽管按今天的标准来看规模很小)吸引我进入了科学 Python 的世界。今天,看到这些工具为从高中教育到导致 2017 年诺贝尔物理学奖的研究等方方面面提供动力,我感到由衷的敬畏。

不要被 1.0 这个数字所迷惑:这个项目是现代科学计算生态系统成熟的基石。我感谢许多使其成为可能的人,并希望将来能再次为其做出贡献。衷心祝贺整个团队!

本次发行的亮点#

本次发行的一些亮点包括:

  • 重大的构建改进。Windows 轮子文件(wheels)首次在 PyPI 上提供,并在 Linux 之外,还为 Windows 和 OS X 建立了持续集成。

  • 一套新的 ODE 求解器以及统一的接口 (scipy.integrate.solve_ivp)。

  • 两个新的置信域(trust region)优化器和一个新的线性规划方法,性能优于 scipy.optimize 之前提供的功能。

  • 封装了许多新的 BLAS 和 LAPACK 函数。BLAS 封装现已完整。

升级与兼容性#

本次发行中有许多弃用和 API 更改,记录如下。在升级之前,我们建议用户检查自己的代码是否使用了弃用的 SciPy 功能(为此,请使用 python -Wd 运行代码并检查 DeprecationWarning)。

此版本要求 Python 2.7 或 >=3.4,以及 NumPy 1.8.2 或更高版本。

这也是最后一个支持 LAPACK 3.1.x - 3.3.x 的版本。将最低支持的 LAPACK 版本移至 >3.2.x 长期以来一直受阻,因为 Apple Accelerate 提供的是 LAPACK 3.2.1 API。我们决定是时候要么放弃 Accelerate,要么(如果有足够兴趣的话)为较新 LAPACK 版本中添加的函数提供垫片(shims),以便它仍能使用。

新功能#

scipy.cluster 改进#

添加了 scipy.cluster.hierarchy.optimal_leaf_ordering,这是一个用于重新排序链接矩阵以最小化相邻叶子节点间距离的函数。

scipy.fftpack 改进#

离散正弦和余弦变换及其逆变换的 N 维版本已作为 dctnidctndstnidstn 添加。

scipy.integrate 改进#

一套新的 ODE 求解器已添加到 scipy.integrate。便捷函数 scipy.integrate.solve_ivp 允许统一访问所有求解器。单个求解器(RK23RK45RadauBDFLSODA)也可以直接使用。

scipy.linalg 改进#

scipy.linalg.blas 中的 BLAS 封装已经完成。添加的函数有 *gbmv*hbmv*hpmv*hpr*hpr2*spmv*spr*tbmv*tbsv*tpmv*tpsv*trsm*trsv*sbmv*spr2

添加了针对 LAPACK 函数 *gels*stev*sytrd*hetrd*sytf2*hetrf*sytrf*sycon*hecon*gglse*stebz*stemr*sterf 以及 *stein 的封装。

添加了函数 scipy.linalg.subspace_angles,用于计算两个矩阵之间的子空间夹角。

添加了函数 scipy.linalg.clarkson_woodruff_transform。它通过 Clarkson-Woodruff 变换寻找低秩矩阵近似。

添加了函数 scipy.linalg.eigh_tridiagonalscipy.linalg.eigvalsh_tridiagonal,用于寻找三对角厄米特/对称矩阵的特征值和特征向量。

scipy.ndimage 改进#

scipy.ndimage.affine_transform 增加了对齐次坐标变换的支持。

ndimage C 代码经历了重大重构,现在更易于理解和维护。

scipy.optimize 改进#

在函数 scipy.optimize.minimize 中添加了 trust-region-exacttrust-krylov 方法。这些新的置信域方法能以更多的 Hessian 矩阵分解(相比 dogleg)或更多的矩阵向量乘积(相比 ncg)为代价,更精确地解决子问题,但通常需要更少的非线性迭代,并能处理不定 Hessian 矩阵。它们看起来与 scipy 中实现的其他牛顿法相比极具竞争力。

scipy.optimize.linprog 获得了一个内点法。其性能(无论是精度还是速度)都优于旧的单纯形法。

scipy.signal 改进#

为以下函数添加了参数 fs(采样频率):firwinfirwin2firlsremez。这使得这些函数与 scipy.signal 中许多其他可以指定采样频率的函数保持一致。

scipy.signal.freqz 在 FIR 滤波器方面的速度得到了显著提升。

scipy.sparse 改进#

CSC 和 CSR 矩阵的迭代和切片速度现在快了高达约 35%。

COO 矩阵的 tocsr 方法现在快了好几倍。

稀疏矩阵的 diagonal 方法现在接受一个参数,指示返回哪条对角线。

scipy.sparse.linalg 改进#

添加了一个用于大规模非对称稀疏线性系统的新迭代求解器 scipy.sparse.linalg.gcrotmk。它实现了 GCROT(m,k),即 GCROT 的一个灵活变体。

scipy.sparse.linalg.lsmr 现在接受初始猜测,从而产生可能更快的收敛。

SuperLU 已更新至 5.2.1 版本。

scipy.spatial 改进#

scipy.spatial.distance 中的许多距离度量获得了对权重的支持。

scipy.spatial.distance.pdistscipy.spatial.distance.cdist 的签名更改为 *args, **kwargs,以支持更广泛的度量(例如需要额外关键字的基于字符串的度量)。此外,为 pdistcdist 添加了可选参数 out,允许用户指定结果距离矩阵的存储位置。

scipy.stats 改进#

scipy.stats.multivariate_normal 添加了 cdflogcdf 方法,提供了多元正态分布的累积分布函数。

添加了新的统计距离函数,即用于一阶 Wasserstein 距离的 scipy.stats.wasserstein_distance 和用于能量距离的 scipy.stats.energy_distance

弃用功能#

scipy.misc 中的以下函数已被弃用:bytescalefromimageimfilterimreadimresizeimrotateimsaveimshowtoimage。其中大多数函数具有非预期行为(例如在用户未要求的情况下缩放和转换图像数据类型)。其他函数则单纯是有更好的替代方案。

scipy.interpolate.interpolate_wrapper 及其子模块中的所有函数已被弃用。这是一套从未完成且现已不再相关的封装函数。

scipy.signal.convolve2dfillvalue 将在未来直接转换为输入数组的数据类型,并检查其是否为标量或仅含单个元素的数组。

scipy.spatial.distance.matching 已被弃用。它是 scipy.spatial.distance.hamming 的别名,应改用后者。

scipy.spatial.distance.wminkowski 的实现曾基于对度量定义的错误理解。在 SciPy 1.0 中,它仅在文档中标记为弃用以保持回溯兼容性,但建议使用实现了正确行为的新版本 scipy.spatial.distance.minkowski

scipy.spatial.distance.pdistscipy.spatial.distance.cdist 的位置参数应替换为其关键字版本。

向后不兼容的更改#

以下弃用的函数已从 scipy.stats 中移除:betaichisqprobf_valuehistogramhistogram2pdf_fromgammasignaltonoisesquare_of_sumsssthreshold

以下弃用的函数已从 scipy.stats.mstats 中移除:betaif_value_wilks_lambdasignaltonoisethreshold

弃用的 areta 关键字已从 scipy.stats.shapiro 中移除。

弃用的函数 sparse.csgraph.cs_graph_componentssparse.linalg.symeig 已从 scipy.sparse 中移除。

scipy.sparse.linalg 中移除以下弃用的关键字:splu 中的 drop_tol,以及 bicgbicgstabcgcgsgmresqmrminres 中的 xtype

弃用的函数 expm2expm3 已从 scipy.linalg 中移除。弃用的关键字 q 已从 scipy.linalg.expm 中移除。弃用的子模块 linalg.calc_lwork 已移除。

弃用的函数 C2KK2CF2CC2FF2KK2F 已从 scipy.constants 中移除。

弃用的 ppform 类已从 scipy.interpolate 中移除。

弃用的关键字 iprint 已从 scipy.optimize.fmin_cobyla 中移除。

scipy.signal.decimatezero_phase 关键字默认值已更改为 True。

scipy.cluster.vq 中的 kmeanskmeans2 函数更改了用于随机初始化的方法,因此使用固定随机种子不一定能产生与旧版本相同的结果。

scipy.special.gammaln 不再接受复数参数。

弃用的函数 sph_jnsph_ynsph_jnynsph_insph_knsph_inkn 已移除。用户应改用 spherical_jnspherical_ynspherical_inspherical_kn。请注意,新函数具有不同的签名。

scipy.signal.lti 系统的跨类属性已移除。以下属性/设置器已移除:

名称 - (访问/设置已移除) - (设置已移除)

  • StateSpace - (num, den, gain) - (zeros, poles)

  • TransferFunction (A, B, C, D, gain) - (zeros, poles)

  • ZerosPolesGain (A, B, C, D, num, den) - ()

signal.freqz(b, a) 中若 ba 大于 1 维将引发 ValueError。这曾是一个行为定义不明确的边缘情况。

当 alpha 的长度为 1 时,scipy.stats.dirichletvar 方法现在返回标量而非 ndarray。

其他更改#

SciPy 现已拥有正式的治理结构。它由一名 BDFL (Pauli Virtanen) 和一个指导委员会组成。详情见 治理文档

现在可以在 Windows 上使用 MSVC + gfortran 构建 SciPy 了!已在 Appveyor 上为此构建配置设置了持续集成,基于 OpenBLAS 进行构建。

已在 TravisCI 上为 OS X 设置了持续集成。

SciPy 测试套件已从 nose 迁移至 pytest

添加了 scipy/_distributor_init.py,以允许 SciPy 的再发行者添加导入 SciPy 时需要运行的自定义代码(例如硬件检查、DLL 搜索路径等)。

添加了对 PEP 518(指定构建系统要求)的支持——见 SciPy 仓库根目录下的 pyproject.toml

为了统一函数名称,函数 scipy.linalg.solve_lyapunov 已重命名为 scipy.linalg.solve_continuous_lyapunov。旧名称为保持向后兼容性而保留。

作者#

  • @arcady +

  • @xoviat +

  • Anton Akhmerov

  • Dominic Antonacci +

  • Alessandro Pietro Bardelli

  • Ved Basu +

  • Michael James Bedford +

  • Ray Bell +

  • Juan M. Bello-Rivas +

  • Sebastian Berg

  • Felix Berkenkamp

  • Jyotirmoy Bhattacharya +

  • Matthew Brett

  • Jonathan Bright

  • Bruno Jiménez +

  • Evgeni Burovski

  • Patrick Callier

  • Mark Campanelli +

  • CJ Carey

  • Robert Cimrman

  • Adam Cox +

  • Michael Danilov +

  • David Haberthür +

  • Andras Deak +

  • Philip DeBoer

  • Anne-Sylvie Deutsch

  • Cathy Douglass +

  • Dominic Else +

  • Guo Fei +

  • Roman Feldbauer +

  • Yu Feng

  • Jaime Fernandez del Rio

  • Orestis Floros +

  • David Freese +

  • Adam Geitgey +

  • James Gerity +

  • Dezmond Goff +

  • Christoph Gohlke

  • Ralf Gommers

  • Dirk Gorissen +

  • Matt Haberland +

  • David Hagen +

  • Charles Harris

  • Lam Yuen Hei +

  • Jean Helie +

  • Gaute Hope +

  • Guillaume Horel +

  • Franziska Horn +

  • Yevhenii Hyzyla +

  • Vladislav Iakovlev +

  • Marvin Kastner +

  • Mher Kazandjian

  • Thomas Keck

  • Adam Kurkiewicz +

  • Ronan Lamy +

  • J.L. Lanfranchi +

  • Eric Larson

  • Denis Laxalde

  • Gregory R. Lee

  • Felix Lenders +

  • Evan Limanto

  • Julian Lukwata +

  • François Magimel

  • Syrtis Major +

  • Charles Masson +

  • Nikolay Mayorov

  • Tobias Megies

  • Markus Meister +

  • Roman Mirochnik +

  • Jordi Montes +

  • Nathan Musoke +

  • Andrew Nelson

  • M.J. Nichol

  • Juan Nunez-Iglesias

  • Arno Onken +

  • Nick Papior +

  • Dima Pasechnik +

  • Ashwin Pathak +

  • Oleksandr Pavlyk +

  • Stefan Peterson

  • Ilhan Polat

  • Andrey Portnoy +

  • Ravi Kumar Prasad +

  • Aman Pratik

  • Eric Quintero

  • Vedant Rathore +

  • Tyler Reddy

  • Joscha Reimer

  • Philipp Rentzsch +

  • Antonio Horta Ribeiro

  • Ned Richards +

  • Kevin Rose +

  • Benoit Rostykus +

  • Matt Ruffalo +

  • Eli Sadoff +

  • Pim Schellart

  • Nico Schlömer +

  • Klaus Sembritzki +

  • Nikolay Shebanov +

  • Jonathan Tammo Siebert

  • Scott Sievert

  • Max Silbiger +

  • Mandeep Singh +

  • Michael Stewart +

  • Jonathan Sutton +

  • Deep Tavker +

  • Martin Thoma

  • James Tocknell +

  • Aleksandar Trifunovic +

  • Paul van Mulbregt +

  • Jacob Vanderplas

  • Aditya Vijaykumar

  • Pauli Virtanen

  • James Webber

  • Warren Weckesser

  • Eric Wieser +

  • Josh Wilson

  • Zhiqing Xiao +

  • Evgeny Zhurko

  • Nikolay Zinov +

  • Zé Vinícius +

共有 121 人为此次发布做出了贡献。名字后面带有“+”号的人是第一次贡献补丁。此姓名列表是自动生成的,可能不完全完整。

1.0.0 版本关闭的议题#

  • #2300: scipy.misc.toimage(以及 imresize)转换为 uint32…

  • #2347: 若干 misc.im* 函数错误地处理 3 或 4 通道图像…

  • #2442: scipy.misc.pilutil -> scipy.ndimage?

  • #2829: Windows 上的 Mingw Gfortran?

  • #3154: scipy.misc.imsave 创建了错误的位图标头

  • #3505: scipy.linalg.lstsq() 残差的帮助文本有点奇怪

  • #3808: 是否实现了用于最小化函数值的 Brent 方法…

  • #4121: 为 stats.multivariate_normal 添加 cdf() 方法

  • #4458: scipy.misc.imresize 改变了图像范围

  • #4575: L-BFGS-B 的文档提到了不存在的参数

  • #4893: misc.imsave 在定义文件类型时不工作

  • #5231: scipy.optimize.minimize(method=’L-BFGS-B’) 中的差异

  • #5238: scipy.cluster.hierarchy.dendrogram 中的最佳叶排序

  • #5305: scipy/misc/pilutil.py 中 misc.imsave 的图像缩放错误?

  • #5823: filter_design 测试失败

  • #6061: scipy.stats.spearmanr 返回值超出 -1 到 1 的范围

  • #6242: imread、imshow 和 imsave 的不一致性 / 重复

  • #6265: 漏洞:带通类型的 signal.iirfilter 在高频处不稳定…

  • #6370: scipy.optimize.linear_sum_assignment 在未定义矩阵上挂起

  • #6417: scipy.misc.imresize 将图像转换为 uint8

  • #6618: splrep 和 splprep 不一致

  • #6854: 在 I/O 函数中支持 PEP 519

  • #6921: [功能请求] 随机酉矩阵

  • #6930: uniform_filter1d 在输出时似乎是截断而非四舍五入…

  • #6949: interp2d 函数崩溃 python

  • #6959: scipy.interpolate.LSQUnivariateSpline - 检查递增性…

  • #7005: scipy.optimize 中的 linear_sum_assignment 在一个条件满足时不返回…

  • #7010: scipy.statsbinned_statistic_2d:返回了错误的 bin 编号

  • #7049: expm_multiply 在区间调用时过慢

  • #7050: 为 rv_discrete 编写 _argcheck 文档

  • #7077: coo_matrix.tocsr() 仍然很慢

  • #7093: 轮子文件许可协议

  • #7122: 基于草图的矩阵计算

  • #7133: 一个 scipy 特殊函数的不连续性

  • #7141: 改进椭圆积分的文档

  • #7181: numpy.poly1d 中的一处更改导致 scipy 测试失败。

  • #7220: LinearOperator.__init__ 中的字符串格式化问题

  • #7239: 源代码压缩包分发

  • #7247: genlaguerre poly1d 对象在计算时不遵循 'monic' 选项

  • #7248: 漏洞:主分支上勒让德多项式的回归

  • #7316: 缺少 dgels

  • #7381: Krogh 插值无法为复数生成导数…

  • #7416: scipy.stats.kappa4(h,k) 对正整数抛出 ValueError…

  • #7421: scipy.stats.arcsine().pdf 和 scipy.stats.beta(0.5, 0.5).pdf…

  • #7429: scipy/linalg/tests/test_basic.py 中的 test_matrix_norms() 调用了…

  • #7444: 文档:stats.dirichlet.var 输出描述错误

  • #7475: scalar_search_wolfe2 中的参数 amax 未被使用

  • #7510: numpy.array 与 scipy.sparse 矩阵之间的操作返回了…

  • #7550: 文档:signal 教程:卷积解释中的拼写错误

  • #7551: SuperLU 头文件中包含了 stdint.h,但该文件不存在于…

  • #7553: OS X 上的主分支构建损坏

  • #7557: scipy.signal.periodogram 示例中的错误

  • #7590: OS X 测试失败 - test_ltisys.TestPlacePoles.test_real

  • #7658: optimize.BenchGlobal 损坏

  • #7669: multivariate_normal.cdf 产生 nan 结果

  • #7733: Delaunay.vertex_neighbor_vertices 中 indices 和 indptr 使用不一致

  • #7747: np.random.dirichlet 中的 Numpy 更改导致测试失败

  • #7772: 修复 numpy lstsq rcond= 参数

  • #7776: 测试需要 `nose`

  • #7798: 1.0 版本说明的贡献者姓名

  • #7828: 32 位 Linux 在 TestCephes 上测试出错

  • #7893: scipy.spatial.distance.wminkowski 在 1.0.0b1 中的行为变化

  • #7898: 文档:窗函数

  • #7959: 可能存在的漏洞:fmin_bfgs 可能在 1.0 中损坏

  • #7969: scipy 1.0.0rc1 Windows 轮子文件依赖于缺失的 msvcp140.dll

1.0.0 版本的拉取请求#

  • #4978: 进行中:为 lombscargle 添加 pre_center 和 normalize 选项

  • #5796: 测试:从测试中移除所有永久过滤器更改

  • #5910: 增强:sparse.linalg:添加 GCROT(m,k)

  • #6326: 增强:新的 ODE 求解器

  • #6480: 增强:使 signal.decimate 默认为 zero_phase=True

  • #6705: 增强:为 sparse.linalg.lsqr 添加初始猜测

  • #6706: 增强:为 sparse.linalg.lsmr 添加初始猜测

  • #6769: 漏洞:optimize:为 CG 线性搜索添加充分下降条件检查…

  • #6855: 在 I/O 函数中处理支持 PEP 519 的对象

  • #6945: 维护:ckdtree 代码库清理

  • #6953: 文档:添加 SciPy 项目治理文档

  • #6998: 修复 Spearman 秩相关系数的文档

  • #7017: 增强:为 scipy.stats.multivariate_normal 添加 logcdf 和 cdf 方法

  • #7027: 添加随机酉矩阵

  • #7030: 增强:为一维样条插值添加对 x 严格递增的检查

  • #7031: 漏洞:修复 linear_sum_assignment 在未定义矩阵上挂起的问题

  • #7041: 文档:澄清窗口函数默认对 DFT 偶对称

  • #7048: 文档:修改 find_peak_cwt 的文档。修复 #6922

  • #7056: 修复计算 spearman/kendall 时精度不足的问题…

  • #7057: 维护:更改 optimize.linear_sum_assignment 中的 dtype 比较方式。

  • #7059: 测试:使 Xdist_deprecated_args 覆盖所有度量

  • #7061: 修复 msvc 9 和 10 的编译错误

  • #7070: 增强:sparse:优化 CSR/CSC 切片的快速路径

  • #7078: 增强:sparse:将 sum_duplicates 延迟到 csr/csc 处理

  • #7079: 增强:sparse:允许子类覆盖特定的数学运算

  • #7081: 增强:sparse:加速 CSR/CSC 的 toarray()

  • #7082: 维护:为 Py3 添加缺失的 PyType_Ready(&SuperLUGlobalType)

  • #7083: 纠正了 scipy.linalg.lstsq() 文档中的拼写错误

  • #7086: 修复导致 expm_multiply 极其缓慢的议题 #7049

  • #7088: 编写了 rv_discrete_argcheck 文档

  • #7094: 维护:修复 PR #7082 中的错误

  • #7098: 漏洞修复:Py3 模块检查失败时返回 NULL

  • #7105: 维护:自定义 lyapunov 求解器中的 ?TRSYL 调用

  • #7111: 修复 UnivariateSpline 中的错误消息拼写错误

  • #7113: 修复:在文档中将 float 添加到返回类型中

  • #7119: 增强:sparse.linalg:移除 _count_nonzero 临时手段

  • #7123: 增强:为 scipy.optimize.linprog 增加了“interior-point”方法

  • #7137: 文档:澄清 stats.linregress 文档字符串,关闭 gh-7074

  • #7138: 文档:special:为 airy 文档字符串添加一个示例。

  • #7139: 文档:stats:更新 stats 教程

  • #7142: 漏洞:special:防止 pbwa 中的段错误

  • #7143: 文档:special:警告关于替代椭圆积分参数化的问题

  • #7146: 修复 NearestNDInterpolator 的文档字符串

  • #7148: 文档:special:为 gamma 文档字符串添加参数、返回值和示例

  • #7152: 维护:spatial:在 ckdtree/src/distance.h 中移除两个未使用的变量

  • #7153: 维护:special:移除 gammaln 的弃用变体

  • #7154: MAINT: 修复一些产生 C 编译器警告的代码

  • #7155: DOC: linalg: 为 solve_bandedsolve_triangular 添加示例

  • #7156: DOC: 修复 NearestNDInterpolator 的文档字符串

  • #7159: BUG: special: 修复 pbwa 中当 x < 0 时的导数符号

  • #7161: MAINT: interpolate: 将 Rbf.A 数组设为属性 (property)

  • #7163: MAINT: special: 为 pbwa 的不准确区域返回 nan

  • #7165: ENH: optimize: 提高 BFGS 实现效率的相关更改

  • #7166: BUG: 防止 optimize._lsq.trf_linear.py 中的死循环

  • #7173: BUG: sparse: 从 _add_dense 返回一个 numpy 矩阵

  • #7179: DOC: 修复稀疏 argmax 文档字符串中的错误

  • #7180: MAINT: interpolate: 对 interpolate/src/_interpolate.cpp 进行少量清理

  • #7182: 允许在 affine_transform 中进行齐次坐标变换

  • #7184: MAINT: 移除修改只读属性的 hack

  • #7185: ENH: 添加周期样条的求值 #6730

  • #7186: MAINT: PPoly: 改进错误形状/轴的错误提示信息

  • #7187: DEP: interpolate: 弃用 interpolate_wrapper

  • #7198: DOC: linalg: 为 solveh_bandedsolve_toeplitz 添加示例

  • #7200: DOC: stats: 为广义分布添加了教程文档…

  • #7208: DOC: 为 issparse/isspmatrix(_...) 方法添加了文档字符串并…

  • #7213: DOC: 为 circmean, circvar, circstd 添加了示例

  • #7215: DOC: 为 scipy.sparse.linalg…. 文档字符串添加示例

  • #7223: DOC: special: 为 expit 和 logit 添加示例

  • #7224: BUG: interpolate: 修复 fitpack.bispev 中的整数溢出

  • #7225: DOC: 更新 1.0 版本发布说明,包含最近的几个 PR

  • #7226: MAINT: 更新文档和代码,以适应邮件列表迁移至 python.org

  • #7233: 修复问题 #7232: 目标函数求值时不再掩盖异常

  • #7234: MAINT: cluster: 清理 VQ/k-means 代码

  • #7236: DOC: 修复拼写错误

  • #7238: BUG: 修复 trustregion_exact 中由于 unicode 字符导致的语法错误

  • #7243: DOC: 更新 misc/pilutil.py 中的文档字符串

  • #7246: DEP: misc: 弃用导入的名称

  • #7249: DOC: 为 scipy.cluster.vq.kmeans 添加绘图示例

  • #7252: 修复 5231: 使 factr, ftol 的文档与代码保持同步

  • #7254: ENH: SphericalVoronoi 输入处理

  • #7256: 修复问题 #7255 - 循环统计函数给出错误的结果…

  • #7263: CI: 使用 python 的 faulthandler 以简化段错误 (segfault) 的追踪

  • #7288: ENH: linalg: 添加 subspace_angles 函数

  • #7290: BUG: stats: 修复 genextreme 中伪造的警告

  • #7292: ENH: optimize: 添加了置信域方法 trust-trlib

  • #7296: DOC: stats: 为 ttest_ind_from_stats 文档字符串添加一个示例

  • #7297: DOC: signal: 为 chirp()sweep_poly() 添加示例

  • #7299: DOC: 使 brent 和 fminbound 之间的区别更清晰

  • #7305: 简化 integrate._ode 中的 if 语句和构造函数调用

  • #7309: 符合 PEP 518 标准

  • #7313: REL: 在 setup.py 中添加 python_requires,修复 Python 版本检查

  • #7315: BUG: 修复了 Laguerre 和 Legendre 多项式的错误

  • #7320: DOC: 明确 ode.integrate 中标志 (flags) 的含义

  • #7333: DOC: 为 scipy.ndimage.gaussian_filter1d 添加示例

  • #7337: ENH: 为 fftpack 添加 n 维 DCT 和 IDCT

  • #7353: 添加 _gels 函数

  • #7357: DOC: linalg: 为 svdvals 文档字符串添加示例

  • #7359: 将 Sphinx 版本提升至 1.5.5

  • #7361: DOC: linalg: 在特殊矩阵之间添加一些“另请参阅”链接…

  • #7362: TST: 修复一些 Fedora 25 上的测试失败

  • #7363: DOC: linalg: 调整 svd 的文档字符串示例

  • #7365: MAINT: 为 Sphinx >= 1.5 修复 refguide_check.py

  • #7367: BUG: odrpack: 修复 d_lpkbls.f 中无效的步长检查

  • #7368: DOC: constants: 为 'find' 文档字符串添加示例

  • #7376: MAINT: 在构建的文档中捆绑 Mathjax

  • #7377: MAINT: optimize: 为精确置信域方法 (trust-region-exact) 命名

  • #7378: 改进教程中的措辞

  • #7383: 修复 KroghInterpolator.derivatives 在复杂输入下的失败

  • #7389: FIX: 在 resample_poly 中复制可变窗口

  • #7390: DOC: optimize: 调整 curve_fit 示例中的一些细节

  • #7391: DOC: 为 scipy.stats 添加示例

  • #7394: “Weight”实际上是质量 (mass)。在质量单位中添加 slugs 和 slinches/blobs

  • #7398: DOC: 修正 optimize.{brenth,brentq} 中的微小拼写错误

  • #7401: DOC: zeta 仅接受实数输入

  • #7413: BUG: 修复 _minimize_trustregion_exact 中的错误信息

  • #7414: DOC: 修复 ndimage.distance_transform_bf 文档字符串 [ci skip]

  • #7415: DOC: 修复 skew 文档字符串 [ci skip]

  • #7423: 使用正确的维度扩展 binnumbers

  • #7431: BUG: 将 scipy.stats.arcsine.pdf 扩展至端点 0 和 1 #7427

  • #7432: DOC: 为 scipy.cluster.hierarchy 添加示例

  • #7448: ENH: stats: 实现 pareto 的生存函数 (survival function)

  • #7454: FIX 使用导入的 assert_allclose 替换 np.assert_allclose

  • #7460: TST: 修复在 32 位 Python 上失败的 integrate.ivp 测试

  • #7461: Doc: 为统计分布 ksone 添加了教程文档

  • #7463: DOC: 修复拼写错误并移除行尾空格

  • #7465: 修复了一些 ndimage.interpolation 的字节序 (endianness) 错误

  • #7468: 删除 interpolate.py 中的冗余

  • #7470: 在 minpack_lmdif 中初始化 “info”

  • #7478: 添加了对 smirnov/smirnovi 函数的更多测试

  • #7479: MAINT: 针对 numpy 1.13.0 中新的 FutureWarning 进行更新

  • #7480: DOC: 正确描述 dirichlet.mean() 的输出形状和…

  • #7482: signal.lti: 移除已弃用的跨系统属性

  • #7484: MAINT: 清理 ndimage 中对 np.asarray 的使用

  • #7485: ENH: 在 ndimage.gaussian_filter 中支持任何 >=0 的阶数

  • #7486: ENH: 为 sparse.diagonal() 支持 k!=0

  • #7498: BUG: sparse: 向 scikit.umfpack 传递 assumeSortedIndices 选项

  • #7501: ENH: 为联动矩阵添加最优叶排序 (optimal leaf ordering)

  • #7506: MAINT: 移除 Metropolis 中的溢出,修复 #7495

  • #7507: TST: 通过减少 mpmath 测试中的求值点来加速完整测试套件

  • #7509: BUG: 修复使用 python setup.py somecommand --force 时的问题

  • #7511: 修复 lgtm 发现的一些警报

  • #7514: 添加对返回整数含义的解释

  • #7516: BUG: 修复 ndimage.uniform_filter1d 中的舍入误差

  • #7517: TST: 修复实际上被跳过的 signal.convolve 测试

  • #7523: ENH: linalg: 允许 lstsq 处理 0 形状的数组

  • #7525: TST: 警告清理

  • #7526: DOC: ndimage.interpolation 函数中的参数并非可选

  • #7527: MAINT: 在 NI_LineBuffer 中封装错误信息处理

  • #7528: MAINT: 移除 ndimage 中 NPY_MAXDIMS 的别名

  • #7529: MAINT: 移除 NI_(UN)LIKELY 宏,改用 numpy 的宏

  • #7537: MAINT: 为 numpy 数组内部结构使用访问器函数 (accessor function)

  • #7541: MAINT: 移除 ndimage 中对 Numarray 类型的一些使用

  • #7543: MAINT: 替换 ni_fourier.c 中所有对 NumarrayTypes 的使用

  • #7544: MAINT: 替换 ni_interpolation.c 中所有对 NumarrayTypes 的使用

  • #7545: MAINT: 替换 ni_measure.c 中所有对 NumarrayTypes 的使用

  • #7546: MAINT: 替换 ni_morphology.c 中所有对 NumarrayTypes 的使用

  • #7548: DOC: 在基准测试 README 中添加关于如何在不重新构建的情况下运行的说明

  • #7549: MAINT: 彻底移除 NumarrayTypes

  • #7552: TST: 修复 OSX 上发现的新警告转错误的 bug

  • #7554: 更新 superlu 至 5.2.1 + 修复 MSVC 上的 stdint.h 问题

  • #7556: MAINT: 修复 #7549 中的一些类型错误 + 杂项警告

  • #7558: MAINT: 使用正确的宏定义 NO_IMPORT_ARRAY,而不是 NO_ARRAY_IMPORT

  • #7562: BUG: 从 numpy 复制 import_nose

  • #7563: ENH: 添加一阶 Wasserstein 和 Cramér-von Mises 统计量…

  • #7568: 测试代码整理

  • #7571: 测试代码整理 第二部分

  • #7572: 采用 Pytest 标准化

  • #7574: TST: 从 stats 中移除忽略警告的过滤器

  • #7577: MAINT: 移除 ndimage/ni_measure.c 和 .h 中未使用的代码

  • #7578: TST: 从 sparse 中移除忽略警告的过滤器,清理警告…

  • #7581: BUG: 正确释放来自 PyArray_IntpConverter 的内存

  • #7582: DOC: signal 教程: 卷积解释中的拼写错误

  • #7583: 移除剩余的忽略警告过滤器

  • #7586: DOC: 在 HACKING.rst 中添加关于在哪里可以找到构建文档的说明

  • #7587: DOC: 为 scipy.optimize 添加示例

  • #7594: TST: 为 ndimage 转换器函数添加测试

  • #7596: 为 signal.savgol_filter 添加了完整性检查

  • #7599: _upfirdn_apply 停止条件的 bug 修复

  • #7601: MAINT: special: 移除 sph_jn 等函数

  • #7602: TST: 修复带有 numpy 的修整统计测试中的测试失败…

  • #7605: 明确所需的维度顺序

  • #7606: MAINT: 移除未使用的函数 NI_NormalizeType

  • #7607: TST: 将 osx 添加到 travis 矩阵中

  • #7608: DOC: 改进 HACKING 指南 - 提及审阅 PR 也是一种贡献方式

  • #7609: MAINT: 通过避免不必要的步骤来移除不必要的警告过滤器

  • #7610: #7557: 修复 periodogram 中的示例代码

  • #7611: #7220: 修复在为无效形状抛出 ValueError 时的 TypeError

  • #7612: 将 yield 测试转换为 pytest 参数化测试

  • #7613: 添加发行版初始化文件 (distributor init file)

  • #7614: 修正头文件 (header)

  • #7615: BUG: sparse: 修复带有非规范稀疏参数的赋值问题

  • #7617: DOC: 阐明数字滤波函数

  • #7619: ENH: scipy.sparse.spmatrix.astype: 转换和复制参数…

  • #7621: 向用户公开 VODE/ZVODE/LSODE IDID 返回码

  • #7622: MAINT: special: 移除 ellpk 过时的注释

  • #7625: TST: 为 “ignore” 警告过滤器添加测试

  • #7628: MAINT: 重构并清理 distance.py/.c/.h

  • #7629: DEP: 弃用 xdist 中的 args 用法

  • #7630: ENH: 加权指标 (weighted metrics)

  • #7634: #6855 的后续跟进

  • #7635: interpolate.splprep: 测试一些错误情况,提供稍好一些的…

  • #7642: 为 interpolate.lagrange 添加一个示例

  • #7643: ENH: 为 LAPACK <s,d>stev 添加了封装器

  • #7649: 修复 #7636,为剩余的 I/O 函数添加 PEP 519 测试覆盖

  • #7650: DOC: signal: 在 sosfiltfilt 的文档字符串中添加“示例”

  • #7651: 修正 Travis 上的 ccache 用法 + 尝试在 OSX 上启用

  • #7653: DOC: 示例从 2 迁移到 3。关闭 #7366

  • #7659: BENCH: 修复 optimize.BenchGlobal。关闭 gh-7658

  • #7662: CI: 加速持续集成构建

  • #7664: 更新 odr 文档

  • #7665: BUG: wolfe2 线搜索/标量搜索现在使用 amax 参数

  • #7671: MAINT: _lib/ccallback.h: PyCapsule_GetName 返回 const char*

  • #7672: TST: interpolate: 测试周期 B 样条的积分…

  • #7674: 测试微调

  • #7675: CI: 将 refguide-check 移至更快的构建环境

  • #7676: DOC: 提升 scipy-sphinx-theme 版本以修复 copybutton.js

  • #7678: 注意 splrepsplprep 结果中的零填充

  • #7681: MAINT: _lib: 添加用户可覆盖的可达内存测定功能

  • #7684: TST: linalg: 显式关闭已打开的 npz 文件

  • #7686: MAINT: 移除不必要的 shebang 行和可执行位

  • #7687: BUG: stats: 如果矩为无穷大,不要发出无效警告

  • #7690: ENH: 允许在几个例程中使用类整数 (int-like) 参数

  • #7691: DOC: 从文档中删除失效的源链接

  • #7694: 将函数 median_cihs 中的 ma.rray 修正为 ma.array

  • #7698: BUG: stats: 修复 multivariate_normal.cdf 的 nan 结果 (#7669)

  • #7703: DOC: special: 更新非中心 F 分布函数的文档字符串

  • #7709: BLD: integrate: 避免 lsoda 和 vode 之间的符号冲突

  • #7711: TST: _lib: 使 test_parallel_threads 不会产生误报失败

  • #7712: TST: stats: 提高 TestMultivariateNormal.test_broadcasting 中的测试容差

  • #7715: MAINT: 修复 numpy.issubdtype 的过时用法

  • #7716: TST: integrate: 放弃计时测试

  • #7717: MAINT: mstats.winsorize 包含 bug 修复

  • #7719: DOC: stats: 添加关于 rdist 分布特殊情况的说明

  • #7720: DOC: 为 stats.pearsonr 添加示例和数学公式

  • #7723: DOC: 添加了 Mann-Whitney U 统计量引用

  • #7727: BUG: special/cdflib: 处理 nan 和非有限输入

  • #7728: BLD: spatial: 修复 ckdtree 依赖头文件列表

  • #7732: BLD: 为新增的 optimal_leaf_ordering 更新 Bento 构建

  • #7734: DOC: signal: 文字编辑并为 Kaiser 相关内容添加示例…

  • #7736: BUG: 修复 #7735: 防止级联索引中的整数溢出…

  • #7737: DOC: 重命名 spatial.Delaunay vertex_neighbor_vertices 的 indices/indptr

  • #7738: ENH: 加快 freqz 计算速度

  • #7739: TST: 忽略 win32 上的 ncfdtridfn 失败,并对 FPU 模式更改发出警告

  • #7740: 修复 Anderson-Darling k-样本检验中的溢出问题

  • #7742: TST: special: 限制 expm1 与 mpmath 比较的范围

  • #7748: TST: stats: 不要向 np.random.dirichlet 传递无效的 alpha

  • #7749: BUG/DOC: optimize: 方法名是 'interior-point',而不是 'interior…

  • #7751: BUG: optimize: show_options('linprog', method='interior-point')

  • #7753: ENH: io: 为混合记录的 FortranFile 读写提供更简单的语法

  • #7754: BLD: 在 Bento 构建中添加 _lib._fpumode 扩展

  • #7756: DOC: 以数学公式形式展示概率密度函数

  • #7757: MAINT: 移除过时的 OS X 构建脚本。修复 pytest 失败

  • #7758: MAINT: stats: pep8 规范,换行

  • #7760: DOC: special: 添加关于如何增加特殊函数的说明

  • #7761: DOC: 允许为 Sphinx makefile 指定 Python 版本

  • #7765: TST: 修复 mstats_extras.py 的测试覆盖率

  • #7767: DOC: 更新 1.0 版本发布说明

  • #7768: DOC: 更新关于如何发布的说明。同时修改 paver 文件以…

  • #7769: 为 planck 分布添加 _sf_logsf 函数

  • #7770: DOC: 替换 minres 文档字符串中失效的链接

  • #7771: MAINT: f2py 构建输出清理

  • #7773: DOC: optimize: 对 linprog 文档进行文字编辑

  • #7774: MAINT: 为 np.linalg.lstsq 调用显式设置 rcond

  • #7777: 移除遗留的 nose 导入

  • #7780: ENH: 封装 LAPACK 的 dsytrd

  • #7781: DOC: 链接 rfft

  • #7782: MAINT: 在 cythonize 中运行 pyx 自动生成并移除自动生成文件

  • #7783: FIX: 数字滤波器中禁止 Wn==1

  • #7790: 修复由 gh-5910 引入的测试错误

  • #7792: MAINT: 修复 pyproject.toml 中的语法

  • #7809: ENH: 草图 (sketches) - Clarkson Woodruff 变换

  • #7810: ENH: 添加 eig(vals)_tridiagonal

  • #7811: BUG: stats: 修复 binned_statistics_dd 中的警告

  • #7814: ENH: signal: 用 'fs' 替换 'nyq' 和 'Hz' 参数

  • #7820: DOC: 更新 1.0 版本发布说明和 mailmap

  • #7823: BUG: messagestream / qhull.pyx 中的内存泄漏

  • #7830: DOC: linalg: 为 lstsq 文档字符串添加一个示例

  • #7835: ENH: 为 decimate 自动确定 FIR 阶数

  • #7838: MAINT: stats: 弃用 frechet_lfrechet_r

  • #7841: slsqp PEP8 格式修复,拼写修正等

  • #7844: DOC: 根据需要,使用捆绑库的许可证更新 LICENSE.txt

  • #7843: ENH: 封装所有 BLAS 例程

  • #7851: ENH: 为 ?GGLSE, ?(HE/SY)CON, ?SYTF2, ?(HE/SY)TRF 添加封装器

  • #7856: ENH: 为 Xdist 添加了 out 参数

  • #7858: BUG: special/cdflib: 修复 cumfnc 中致命的精度损失问题

  • #7859: FIX: 压制 place_poles 警告的边缘情况

  • #7861: 为未定义的 WITH_THREAD 添加哑语句 (dummy statement)

  • #7863: MAINT: 在二进制发行版中添加许可证文本

  • #7866: DOC, MAINT: 修复文档中的链接

  • #7867: DOC: 修正分布文档字符串中 PDF 的描述

  • #7869: DEP: 弃用 misc.pilutil 函数

  • #7870: DEP: 移除已弃用的函数

  • #7872: TST: 静默标记为…的 stats.truncnorm 测试的 RuntimeWarning

  • #7874: TST: 修复一个间歇性失败的 optimize.linprog 测试

  • #7875: TST: 过滤 stats 测试中的两个积分警告

  • #7876: GEN: 在测试中添加注释以进行说明

  • #7891: ENH: 将 #7879 后向移植到 1.0.x

  • #7902: MAINT: signal: 使 freqz 对多维数组的处理与…保持一致

  • #7905: REV: 恢复 wminkowski

  • #7908: FIX: 避免不良的 __del__ (关闭) 行为

  • #7918: TST: 将两个 optimize.linprog 测试标记为 xfail。参见 gh-7877

  • #7929: MAINT: 在 sytf2, sytrf 和 hetrf 中将默认值改为 lower

  • #7939: 修复 win-amd64 上的 umfpack 求解器构建

  • #7948: DOC: 添加关于升级到…前检查弃用情况的说明

  • #7952: DOC: 根据 1.0 发布和最近的讨论更新 SciPy 路线图

  • #7960: BUG: optimize: 撤销 gh-7165 中对 bfgs 的更改

  • #7962: TST: special: 将一个失败的 hyp2f1 测试标记为 xfail

  • #7973: BUG: 修正 _get_mem_available 工具中 'info' 的关键字

  • #8001: TST: 修复 Matplotlib 2.1 更新导致的测试失败

  • #8010: BUG: signal: 修复 lfilter 中的崩溃

  • #8019: MAINT: 修复 NumPy master 分支下的测试失败