SciPy-1-12-中文文档-三十四-

SciPy 1.12 中文文档(三十四)

原文:docs.scipy.org/doc/scipy-1.12.0/index.html

SciPy 0.10.1 发布说明

原文链接:docs.scipy.org/doc/scipy-1.12.0/release/0.10.1-notes.html

内容

  • SciPy 0.10.1 发布说明

    • 主要变更

    • 其他问题已解决

SciPy 0.10.1 是一个修复错误的版本,与 0.10.0 相比没有新功能。

主要变更

最重要的变更包括:

  1. scipy.sparse.linalg 中的单精度函数 eigseigsh 已禁用(它们现在内部使用双精度)。

  2. 已解决与 NumPy 宏变更相关的兼容性问题,以便使 scipy 0.10.1 能够与即将发布的 numpy 1.7.0 编译。

其他问题已解决

  • 835:stats:stats.distributions 中的 nan 传播问题。

  • 1202:io:netcdf 段错误

  • 1531:优化:使 curve_fit 能够使用方法作为可调用对象。

  • 1560:linalg:eig_banded 文档中的错误已修正。

  • 1565:ndimage:ndimage.variance 中的 bug。

  • 1457:ndimage:standard_deviation 无法处理索引序列。

  • 1562:cluster:linkage 函数中的段错误。

  • 1568:stats:单侧 fisher_exact() 返回 p < 1,表示 0 次成功尝试。

  • 1575:stats:zscore 和 zmap 错误处理轴关键字。

SciPy 0.10.0 发布说明

原文链接:docs.scipy.org/doc/scipy-1.12.0/release/0.10.0-notes.html

目录

  • SciPy 0.10.0 发布说明

    • 新特性

      • Bento:新的可选构建系统

      • scipy.sparse.linalg 中的广义和移位反演特征值问题

      • 离散时间线性系统 (scipy.signal)

      • scipy.signal 的增强

      • 额外的分解选项 (scipy.linalg)

      • 额外的特殊矩阵 (scipy.linalg)

      • scipy.stats 的增强

      • scipy.special 的增强

      • 稀疏矩阵的 Harwell-Boeing 文件格式的基本支持

    • 已弃用的特性

      • scipy.maxentropy

      • scipy.lib.blas

      • Numscons 构建系统

    • 不兼容的后向变更

    • 其他变更

    • 作者

SciPy 0.10.0 是 8 个月辛勤工作的成果。它包含许多新特性、大量的 bug 修复、改进的测试覆盖率和更好的文档。在这个版本中有少量的弃用和不兼容后向变更,这些都在下面有详细记录。鼓励所有用户升级到这个版本,因为它包含大量的 bug 修复和优化。此外,我们的开发重点现在将转向 0.10.x 分支的 bug 修复发布,以及在开发主分支上添加新功能。

发布亮点:

  • 支持 Bento 作为可选的构建系统。
  • 支持广义特征值问题,以及 ARPACK 中所有移位反演模式。

此版本需要 Python 2.4-2.7 或 3.1-,以及 NumPy 1.5 或更高版本。

新特性

Bento:新的可选构建系统

Scipy 现在可以使用 Bento 进行构建。Bento 具有一些很好的特性,比如并行构建和部分重建,这是默认构建系统(distutils)所不可能的。有关使用说明,请参见 scipy 顶级目录中的 BENTO_BUILD.txt。

目前 Scipy 有三种构建系统,分别是 distutils、numscons 和 bento。Numscons 已经不推荐使用,并计划在下一个发布版本中移除。

scipy.sparse.linalg 中的广义和移位反演特征值问题

稀疏特征值问题求解器函数 scipy.sparse.eigs/eigh 现在支持广义特征值问题,以及 ARPACK 中所有移位反演模式。

离散时间线性系统 (scipy.signal)

支持模拟离散时间线性系统,包括 scipy.signal.dlsimscipy.signal.dimpulsescipy.signal.dstep。还可以通过 scipy.signal.cont2discrete 函数将线性系统从连续时间表示转换为离散时间表示。

增强的scipy.signal

可以使用新函数 scipy.signal.lombscargle 计算 Lomb-Scargle 周期图。

前后向滤波函数scipy.signal.filtfilt现在可以过滤给定 n 维 numpy 数组的特定轴上的数据。(先前仅处理一维数组。)添加了选项以允许更多控制数据在过滤前的扩展方式。

使用 scipy.signal.firwin2 进行 FIR 滤波器设计现在具有创建 III 型(零点在零和奈奎斯特频率)和 IV 型(零点在零频率)滤波器的选项。

附加分解选项(scipy.linalg

Schur 分解例程 (scipy.linalg.schur) 添加了排序关键字,允许对结果的 Schur 形式中的特征值进行排序。

附加特殊矩阵(scipy.linalg

函数 hilbertinvhilbert 已添加到 scipy.linalg

增强的scipy.stats

  • 单侧形式 的 Fisher 精确检验现在也在 stats.fisher_exact 中实现。

  • 添加了函数 stats.chi2_contingency,用于计算列联表中因素独立性的卡方检验,以及相关的实用函数 stats.contingency.marginsstats.contingency.expected_freq

增强的scipy.special

函数 logit(p) = log(p/(1-p))expit(x) = 1/(1+exp(-x)) 现已作为 scipy.special.logitscipy.special.expit 实现。

稀疏矩阵的 Harwell-Boeing 文件格式的基本支持

支持通过简单的基于函数的 API 进行读写,以及更完整的 API 来控制数字格式。这些函数可以在 scipy.sparse.io 中找到。

支持以下功能:

  • 读写 CSC 格式的稀疏矩阵。
  • 仅支持实数、对称、已组装的矩阵(RUA 格式)。

已弃用的功能

scipy.maxentropy

maxentropy 模块未维护,已经很少使用,并且在几个发布版本中表现不佳。因此,在此版本中已弃用,并将在 scipy 0.11 版本中移除。在 scikits.learn 中的 logistic 回归是这一功能的一个很好的替代方案。scipy.maxentropy.logsumexp 函数已移至 scipy.misc

scipy.lib.blas

scipy.linalgscipy.lib 中存在类似的 BLAS 封装。现已合并为 scipy.linalg.blasscipy.lib.blas 已被弃用。

Numscons 构建系统

Numscons 构建系统正在被 Bento 替代,并将在未来的一个 scipy 发布版本中移除。

不兼容的变更

已从scipy.stats.distributions中移除了过时的名称invnorm,该分布现在以invgauss形式提供。

scipy.optimize中移除了以下不推荐使用的非线性求解器:

- ``broyden_modified`` (bad performance)
- ``broyden1_modified`` (bad performance)
- ``broyden_generalized`` (equivalent to ``anderson``)
- ``anderson2`` (equivalent to ``anderson``)
- ``broyden3`` (obsoleted by new limited-memory broyden methods)
- ``vackar`` (renamed to ``diagbroyden``) 

其他变更

已使用 CODATA 2010 常数更新了scipy.constants

所有模块现在都添加了__all__字典,这清理了命名空间(特别适用于交互式工作)。

文档中添加了一个 API 部分,提供了推荐的导入指南,并指明哪些子模块是公共的,哪些不是。

作者

此版本包含以下人员的工作(至少为此版本贡献了一个补丁,按字母顺序排列的名单):

  • Jeff Armstrong +

  • Matthew Brett

  • Lars Buitinck +

  • David Cournapeau

  • FI$H 2000 +

  • Michael McNeil Forbes +

  • Matty G +

  • Christoph Gohlke

  • Ralf Gommers

  • Yaroslav Halchenko

  • Charles Harris

  • Thouis(Ray)Jones +

  • Chris Jordan-Squire +

  • Robert Kern

  • Chris Lasher +

  • Wes McKinney +

  • Travis Oliphant

  • Fabian Pedregosa

  • Josef Perktold

  • Thomas Robitaille +

  • Pim Schellart +

  • Anthony Scopatz +

  • Skipper Seabold +

  • Fazlul Shahriar +

  • David Simcha +

  • Scott Sinclair +

  • Andrey Smirnov +

  • Collin RM Stocks +

  • Martin Teichmann +

  • Jake Vanderplas +

  • Gaël Varoquaux +

  • Pauli Virtanen

  • Stefan van der Walt

  • Warren Weckesser

  • Mark Wiebe +

总共有 35 人为此版本做出了贡献。带有“+”标记的人是首次为此贡献补丁。

SciPy 0.9.0 发布说明

原文链接:docs.scipy.org/doc/scipy-1.12.0/release/0.9.0-notes.html

内容

  • SciPy 0.9.0 发布说明

    • Python 3

    • SciPy 源代码位置将被更改

    • 新功能

      • Delaunay 三角剖分(scipy.spatial

      • N 维插值(scipy.interpolate

      • 非线性方程求解器(scipy.optimize

      • 新的线性代数例程(scipy.linalg

      • 改进的 FIR 滤波器设计函数(scipy.signal

      • 改进的统计检验(scipy.stats

    • 已弃用的功能

      • 过时的非线性求解器(在scipy.optimize中)
    • 已删除的功能

      • 旧的相关/卷积行为(在scipy.signal中)

      • scipy.stats

      • scipy.sparse

      • scipy.sparse.linalg.arpack.speigs

    • 其他变更

      • ARPACK 接口变更

SciPy 0.9.0 是 6 个月努力的结晶。它包含许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。在这个版本中有一些弃用和 API 更改,下面有详细记录。建议所有用户升级到此版本,因为有大量错误修复和优化。此外,我们的开发注意力现在将转移到 0.9.x 分支上的 Bug 修复版本,并在开发主干上添加新功能。

本次发布需要 Python 2.4 - 2.7 或 3.1 及更高版本,以及 NumPy 1.5 或更高版本。

请注意,SciPy 仍然被视为“Beta”状态,因为我们正在努力朝着 SciPy 1.0.0 发布迈出重要的一步。1.0.0 版本将标志着 SciPy 开发的一个重要里程碑,之后更改软件包结构或 API 将更加困难。尽管这些 1.0 之前的版本被认为是“Beta”状态,我们致力于尽可能使其无 Bug。

然而,在 1.0 版本发布之前,我们正在积极审查和完善功能、组织和接口。这是为了使软件包尽可能连贯、直观和有用。为了达到这个目标,我们需要用户社区的帮助。具体来说,我们需要关于项目各个方面的反馈意见 - 从我们实现的算法到函数调用签名的细节。

Python 3

Scipy 0.9.0 是第一个支持 Python 3 的 SciPy 版本。唯一尚未移植的模块是scipy.weave

Scipy 源代码位置将更改

不久之后的此版本发布后,Scipy 将停止使用 SVN 作为版本控制系统,并转向 Git。从那时起,可以在以下位置找到 Scipy 的开发源代码:

github.com/scipy/scipy

新特性

Delaunay 团聚(scipy.spatial

Scipy 现在包含了使用 Qhull 计算几何库计算 N 维 Delaunay 团聚的例程。这种计算现在可以利用新的 scipy.spatial.Delaunay 接口。

N 维插值(scipy.interpolate

对散乱数据插值的支持现在显著改进。此版本包括一个 scipy.interpolate.griddata 函数,可对 N 维散乱数据执行线性和最近邻插值,以及在 2D 和 1D 中的三次样条(C1-smooth)插值。还提供了每种插值器类型的面向对象接口。

非线性方程求解器(scipy.optimize

Scipy 包括了大规模非线性方程求解的新例程在 scipy.optimize 中。实现了以下方法:

  • 牛顿-克里洛夫(scipy.optimize.newton_krylov

  • (广义)割线法:

    • 有限内存 Broyden 方法(scipy.optimize.broyden1scipy.optimize.broyden2

    • Anderson 方法(scipy.optimize.anderson

  • 简单迭代(scipy.optimize.diagbroydenscipy.optimize.excitingmixingscipy.optimize.linearmixing

scipy.optimize.nonlin 模块已完全重写,并弃用了部分函数(见上文)。

新的线性代数例程(scipy.linalg

Scipy 现在包含了有效求解三角方程系统的例程(scipy.linalg.solve_triangular)。

改进的 FIR 滤波器设计函数(scipy.signal

函数 scipy.signal.firwin 已经改进,允许设计高通、带通、带阻和多带通 FIR 滤波器。

函数 scipy.signal.firwin2 已添加。此函数使用窗口方法创建具有任意频率响应的线性相 FIR 滤波器。

函数 scipy.signal.kaiser_attenscipy.signal.kaiser_beta 已添加。

改进的统计检验(scipy.stats

新函数 scipy.stats.fisher_exact 已添加,提供 Fisher 确切检验用于 2x2 离散表格。

函数 scipy.stats.kendalltau 被重写以使其速度大大提高(O(n log(n)) 对比 O(n²))。

废弃的特性

废弃的非线性求解器(在 scipy.optimize 中)

以下来自 scipy.optimize 的非线性求解器已被弃用:

  • broyden_modified(性能不佳)

  • broyden1_modified(性能不佳)

  • broyden_generalized(等同于 anderson

  • anderson2(等同于 anderson

  • broyden3(被新的有限内存 Broyden 方法淘汰)

  • vackar(重命名为 diagbroyden

移除的特性

scipy.misc 中移除了已弃用的模块 helpmod, pexecppimport

scipy.ndimage 插值函数中的 output_type 关键字已被移除。

scipy.linalg.qr 中的 econ 关键字已被移除。可以通过指定 mode='economic' 来获得相同的功能。

旧的 correlate/convolve 行为(在 scipy.signal 中)

0.8.0 版本中废弃的 scipy.signal.convolve, scipy.signal.convolve2d, scipy.signal.correlatescipy.signal.correlate2d 的旧行为已被移除。现在的行为是从不交换输入,这是大多数人期望的,并且是相关性通常定义的方式。

scipy.stats

scipy.stats 中的许多函数已经从 numpy 中可用或已被取代,自版本 0.7 起已被弃用,并已被移除:std, var, mean, median, cov, corrcoef, z, zs, stderr, samplestd, samplevar, pdfapprox, pdf_momentserfc。这些变化在 scipy.stats.mstats 中也得到了反映。

scipy.sparse

自版本 0.7 起已弃用的 scipy.sparse 稀疏矩阵类的多个方法已被移除:save, rowcol, getdata, listprint, ensure_sorted_indices, matvec, matmatrmatvec

函数 spkron, speye, spidentity, lil_eyelil_diags 已从 scipy.sparse 中移除。前三个函数仍然可通过 scipy.sparse.kron, scipy.sparse.eyescipy.sparse.identity 获得。

稀疏矩阵构造函数中已移除 dimsnzmax 关键字。CSR 和 CSC 矩阵分别移除了 colindrowind 属性。

scipy.sparse.linalg.arpack.speigs

ARPACK 库的重复接口已被移除。

其他变更

ARPACK 接口变更

scipy.sparse.linalg 中 ARPACK 特征值例程的接口已更改以提升稳健性。

现在,特征值和奇异值分解例程在特征值迭代失败时会引发 ArpackNoConvergence 异常。如果需要部分收敛的结果,可以按以下方式访问:

import numpy as np
from scipy.sparse.linalg import eigs, ArpackNoConvergence

m = np.random.randn(30, 30)
try:
    w, v = eigs(m, 6)
except ArpackNoConvergence, err:
    partially_converged_w = err.eigenvalues
    partially_converged_v = err.eigenvectors 

也修复了几个错误。

这些例程还重命名如下:

  • eigen 改为 eigs
  • eigen_symmetric 改为 eigsh
  • svd 改为 svds

SciPy 0.8.0 发布说明

原文:docs.scipy.org/doc/scipy-1.12.0/release/0.8.0-notes.html

内容

  • SciPy 0.8.0 发布说明

    • Python 3

    • 主要文档改进

    • 弃用特性

      • 交换相关函数的输入(scipy.signal)

      • 废弃的代码(scipy.misc)

      • 额外的弃用

    • 新功能

      • DCT 支持(scipy.fftpack)

      • fft 函数的单精度支持(scipy.fftpack)

      • 相关函数现在实现了通常的定义(scipy.signal)

      • LTI 函数的添加和修改(scipy.signal)

      • 改进的波形发生器(scipy.signal)

      • scipy.linalg 中的新功能和其他变化

      • scipy.optimize 中的新功能和变更

      • 新的稀疏最小二乘求解器

      • 基于 ARPACK 的稀疏 SVD

      • 可用的替代行为 scipy.constants.find

      • 不完全稀疏 LU 分解

      • 更快的 Matlab 文件读取器和默认行为更改

      • 正交多项式的更快计算

      • Lambert W 函数

      • 改进的超几何 2F1 函数

      • 径向基函数插值的更灵活接口

    • 已移除的特性

      • scipy.io

SciPy 0.8.0 是 17 个月努力的结晶。它包含许多新功能、大量错误修复、改进的测试覆盖率和更好的文档。在此版本中还有一些弃用和 API 变更,以下是详细说明。建议所有用户升级到此版本,因为修复了大量错误并进行了优化。此外,我们的开发注意力现在将转向 0.8.x 分支的错误修复版本,并在开发主干上添加新功能。本次发布需要 Python 2.4 - 2.6 和 NumPy 1.4.1 或更高版本。

请注意,尽管我们正朝着 SciPy 1.0.0 版本的发布努力,SciPy 仍被视为“Beta”状态。1.0.0 版本将标志着 SciPy 发展中的一个重要里程碑,此后更改软件包结构或 API 将变得更加困难。在这些 1.0 之前的版本被视为“Beta”状态时,我们致力于尽可能使其无 bug。

然而,在 1.0 版本发布之前,我们正在积极审查和完善功能、组织和界面。这是为了尽可能使软件包更具连贯性、直观性和实用性。为了实现这一点,我们需要用户社区的帮助。具体来说,我们需要反馈关于项目的所有方面的信息 - 从我们实现的算法到我们函数调用签名的细节。

Python 3

Python 3 的兼容性已经计划,并且目前在技术上是可行的,因为 Numpy 已经被移植。然而,由于尚未发布与 Python 3 兼容的 Numpy 1.5 版本,因此在 Scipy 0.8 中还不包括对 Python 3 的支持。计划于 2010 年秋季发布的 Scipy 0.9 很可能会包含对 Python 3 的实验性支持。

重要文档改进

SciPy 文档得到了极大的改善。

已弃用的功能

交换相关函数输入(scipy.signal)

Concern correlate, correlate2d, convolve 和 convolve2d。如果第二个输入比第一个输入大,则在调用底层计算例程之前交换输入。此行为已被弃用,并将在 scipy 0.9.0 中删除。

已弃用的过时代码(scipy.misc)

scipy.misc 模块中的 helpmodppimportpexec 已经弃用。它们将在 SciPy 0.9 版本中移除。

其他弃用功能

  • linalg:solveh_banded 函数目前返回一个包含 Cholesky 分解和线性系统解的元组。在 SciPy 0.9 中,返回值将只是解。

  • constants.codata.find 函数将生成 DeprecationWarning。在 Scipy 版本 0.8.0 中,已向函数添加了关键字参数 ‘disp’,默认值为 ‘True’。在 0.9.0 中,默认值将为 ‘False’。

  • signal.chirpqshape 关键字参数已弃用。请改用 vertex_zero 参数。

  • 将多项式的系数作为 f0 参数传递给 signal.chirp 已弃用。请改用 signal.sweep_poly 函数。

  • io.recaster 模块已经弃用,并将在 0.9.0 版本中移除。

新特性

DCT 支持(scipy.fftpack)

添加了新的实数变换,即 dct 和 idct 用于离散余弦变换;类型 I、II 和 III 都可用。

fft 函数的单精度支持(scipy.fftpack)

fft 函数现在也可以处理单精度输入:如果 x 是单精度,则 fft(x) 将返回一个单精度数组。

目前,对于不是 2、3 和 5 的组合的 FFT 大小,内部计算转换为双精度以避免 FFTPACK 中的舍入误差。

相关函数现在实现通常的定义(scipy.signal)

现在输出应该与它们的 matlab 和 R 对应物一致,并且如果传递了 old_behavior=False 参数,则做大多数人所期望的事情:

  • 相关、卷积及其二维对应函数不再根据它们的相对形状交换它们的输入;

  • 在计算滑动和乘积和时,相关函数现在对第二个参数进行共轭,这对应于相关的通常定义。

LTI 函数的添加和修改(scipy.signal)

  • 添加了 impulse2step2 函数到 scipy.signal。它们使用函数 scipy.signal.lsim2 分别计算系统的脉冲响应和阶跃响应。

  • 函数 scipy.signal.lsim2 已更改以将任何额外的关键字参数传递给 ODE 求解器。

改进的波形生成器(scipy.signal)

scipy.signal 中对 chirp 函数进行了几项改进:

  • method=”logarithmic” 时生成的波形已进行了修正;现在生成的波形也被称为“指数”或“几何”啁啾声。(参见 zh.wikipedia.org/wiki/%E9%B3%B4%E5%AD%90%E5%A3%B0。)

  • 添加了一个新的 chirp 方法,“双曲线”。

  • 现在 chirp 不再使用关键字 qshape,而是使用关键字 vertex_zero,一个布尔值。

  • chirp 不再处理任意多项式。此功能已移至新函数 sweep_poly

添加了一个新函数 sweep_poly

scipy.linalg 中的新函数和其他更改

函数 cho_solve_bandedcirculantcompanionhadamardleslie 被添加到 scipy.linalg

函数 block_diag 已增强以接受标量和 1D 参数,以及通常的 2D 参数。

scipy.optimize 中的新函数和更改

添加了 curve_fit 函数;它采用一个函数,并使用非线性最小二乘法将其拟合到提供的数据中。

leastsqfsolve 函数现在在解决单个参数时返回大小为一的数组而不是标量。

新的稀疏最小二乘求解器

函数 lsqr 被添加到 scipy.sparse此例程 找到一个大型稀疏线性方程组的最小二乘解。

基于 ARPACK 的稀疏 SVD

在 scipy.sparse.linalg._eigen.arpack 中提供了稀疏矩阵的 SVD 的朴素实现。它基于在 <A, A> 上使用对称求解器,因此可能不是非常精确。

可用于替代行为的 scipy.constants.find

关键字参数 disp 被添加到函数 scipy.constants.find 中,默认值为 True。当 dispTrue 时,行为与 Scipy 版本 0.7 中相同。当 False 时,该函数返回键列表而不是打印它们。(在 SciPy 版本 0.9 中,将反转默认值。)

不完全稀疏 LU 分解

Scipy 现在包装了支持不完全稀疏 LU 分解的 SuperLU 版本 4.0。这些可以通过 scipy.sparse.linalg.spilu 访问。升级到 SuperLU 4.0 还修复了一些已知的 bug。

更快的 matlab 文件阅读器和默认行为更改

我们已经用 Cython 重写了 matlab 文件阅读器,现在它应该以与 Matlab 相同的速度读取 matlab 文件。

读取器可以读取 matlab 命名和匿名函数,但不能写入它们。

直到 scipy 0.8.0,我们返回 matlab 结构体的数组作为 numpy 对象数组,其中对象具有与结构体字段同名的属性。从 0.8.0 开始,我们将 matlab 结构体作为 numpy 结构化数组返回。您可以通过在 scipy.io.loadmat 和相关函数中使用可选的 struct_as_record=False 关键字参数来获取旧的行为。

Matlab 文件写入器存在一个不一致性,即它将 numpy 1D 数组写入 matlab 5 文件时作为列向量,而在 matlab 4 文件中作为行向量。我们将在下一个版本中进行更改,使两者都写入行向量。在调用写入器时会有一个 FutureWarning 来警告这一变更;目前建议使用 oned_as='row' 关键字参数来调用 scipy.io.savemat 和相关函数。

更快的正交多项式评估

可以使用 scipy.special 中的新向量化函数评估正交多项式:eval_legendreeval_chebyteval_chebyueval_chebyceval_chebyseval_jacobieval_laguerreeval_genlaguerreeval_hermiteeval_hermitenormeval_gegenbauereval_sh_legendreeval_sh_chebyteval_sh_chebyueval_sh_jacobi。这比构造多项式的完整系数表示要快,而后者是先前唯一可用的方式。

请注意,以前的正交多项式例程现在在可能时也会调用此功能。

Lambert W 函数

scipy.special.lambertw 现在可以用于评估 Lambert W 函数。

改进的超几何函数 2F1

scipy.special.hyp2f1 的实现针对实参数进行了修订。新版本应该能为所有实参数生成准确的值。

更灵活的径向基函数插值接口

scipy.interpolate.Rbf 类现在接受一个可调用对象作为 “function” 参数的输入,除了可以用字符串参数选择的内置径向基函数。

已移除的功能

scipy.stsci:此包已被移除

模块 scipy.misc.limits 已移除。

scipy.io

NumPy 和 SciPy 中的 IO 代码正在进行广泛的重构。NumPy 将负责基本的 NumPy 数组读写代码,而 SciPy 将包含各种数据格式(数据、音频、视频、图像、matlab 等)的文件读写器。

在 0.8.0 版本中,scipy.io 中的多个函数已移除,包括:npfilesaveloadcreate_modulecreate_shelfobjloadobjsavefopenread_arraywrite_arrayfreadfwritebswappackbitsunpackbitsconvert_objectarray。其中一些函数已被 NumPy 的原始读写能力、内存映射能力或数组方法替代。其他函数已从 SciPy 移至 NumPy,因为现在基本的数组读写功能由 NumPy 处理。

SciPy 0.7.2 发布说明

原文链接:docs.scipy.org/doc/scipy-1.12.0/release/0.7.2-notes.html

内容

  • SciPy 0.7.2 发布说明

SciPy 0.7.2 是与 0.7.1 版本相比没有新功能的 bug 修复版本。唯一的变化是使用 Cython 0.12.1 重新生成了所有来自 Cython 代码的 C 源码。这修复了 SciPy 0.7.1 与 NumPy 1.4 之间的不兼容性问题。

SciPy 0.7.1 发布说明

原文链接:docs.scipy.org/doc/scipy-1.12.0/release/0.7.1-notes.html

内容:

  • SciPy 0.7.1 发布说明

    • scipy.io

    • scipy.odr

    • scipy.signal

    • scipy.sparse

    • scipy.special

    • scipy.stats

    • Windows 平台的 Python 2.6 二进制文件

    • Scipy 的通用构建

SciPy 0.7.1 是一个 bug 修复版本,与 0.7.0 版本相比没有新增功能。

scipy.io

修复的问题:

  • Matlab 文件 IO 中的几个修复

scipy.odr

修复的问题:

  • 解决了与 Python 2.6 的兼容性问题

scipy.signal

修复了 lfilter 中的内存泄漏以及对数组对象的支持。

修复的问题:

  • 880, #925: lfilter 修复

  • 871: bicgstab 在 Win32 上失败

scipy.sparse

修复的问题:

scipy.special

在特殊函数中修复了几个不同严重程度的 bug:

  • 503, #640: iv:通过新实现解决了大参数下的问题

  • 623: jv:修复大参数下的错误

  • 679: struve:修复 v < 0 时错误的输出

  • 803: pbdv 生成无效输出

  • 804: lqmn:修复某些输入导致的崩溃

  • 823: betainc:修复文档问题

  • 834: exp1 在负整数值附近的奇怪行为

  • 852: jn_zeros:对于大的 s,提供更准确的结果,同时适用于 jnp/yn/ynp_zeros

  • 853: jv, yv, iv:对于非整数 v < 0 和复数 x,修复无效的结果

  • 854: jv, yv, iv, kv:在超出定义域时更一致地返回 nan

  • 927: ellipj:修复 Windows 平台的段错误

  • 946: ellpj:修复 Mac OS X/Python 2.6 组合的段错误

  • ive、jve、yve、kv、kve:对于实值输入,当超出定义域时返回 nan 而不仅仅返回结果的实部。

此外,当启用scipy.special.errprint(1)时,警告消息现在作为 Python 警告而不是打印到 stderr。

scipy.stats

  • linregress、mannwhitneyu、describe:修复错误

  • 在分布的数值精度上做出改进,包括 kstwobign、norm、expon、exponweib、exponpow、frechet、genexpon、rdist、truncexpon、planck

Windows 平台的 Python 2.6 二进制文件

现在包含了 Windows 平台的 Python 2.6 二进制文件。Python 2.5 版本需要 numpy 1.2.0 或更高版本,而 Python 2.6 版本需要 numpy 1.3.0 或更高版本。

Scipy 的通用构建

Mac OS X 的二进制安装程序现在是一个适合通用构建的正确版本,不再依赖于 gfortran(libgfortran 已静态链接)。Scipy 的 Python 2.5 版本需要 numpy 1.2.0 或更高版本,Python 2.6 版本需要 numpy 1.3.0 或更高版本。

SciPy 0.7.0 发布说明

原文链接:docs.scipy.org/doc/scipy-1.12.0/release/0.7.0-notes.html

内容

  • SciPy 0.7.0 发布说明

    • Python 2.6 和 3.0

    • 主要文档改进

    • 运行测试

    • 构建 SciPy

    • 移除沙箱

    • 稀疏矩阵

    • 统计包

    • 重新设计 IO 包

    • 新的层次聚类模块

    • 新的空间包

    • 重设计的 fftpack 包

    • 新的常量包

    • 新的径向基函数模块

    • 新的复杂 ODE 积分器

    • 新的广义对称和厄米特特征值问题求解器

    • 插值包中的 bug 修复

    • Weave 清理

    • 已知问题

SciPy 0.7.0 是 16 个月努力的成果。它包含许多新功能,大量错误修复,改进的测试覆盖率和更好的文档。在这个版本中还有一些已被弃用的内容和 API 更改,这些都在下文有详细记录。我们鼓励所有用户升级到这个版本,因为它修复了大量错误并进行了优化。此外,我们的开发重点现在将转向 0.7.x 分支的错误修复发布,以及在开发主干上添加新功能。该版本需要 Python 2.4 或 2.5 和 NumPy 1.2 或更高版本。

请注意,SciPy 仍被视为“Beta”状态,因为我们正在努力实现 SciPy 1.0.0 发布。1.0.0 发布将标志着 SciPy 发展的重要里程碑,之后更改包结构或 API 将更加困难。尽管这些 1.0 之前的版本被视为“Beta”状态,但我们致力于尽可能使它们没有错误。例如,在本次发布中除了修复了大量 bug 外,我们还比上一个版本增加了两倍的单元测试数量。

然而,在 1.0 版本发布之前,我们正在积极审查和完善功能、组织和接口。我们正在努力使这个包尽可能地一致、直观和有用。为了实现这一点,我们需要用户社区的帮助。具体来说,我们需要关于项目的各个方面的反馈意见——从我们实现哪些算法,到关于我们函数调用签名的细节。

在过去的一年里,我们看到社区参与度迅速增加,并进行了许多基础设施改进,以降低贡献的门槛(例如更明确的编码标准、改进的测试基础设施、更好的文档工具)。在未来的一年里,我们希望这一趋势持续下去,并邀请每个人更加参与。

Python 2.6 和 3.0

大量工作已经投入使 SciPy 兼容 Python 2.6;然而,在这方面仍存在一些问题。与 2.6 支持的主要问题是 NumPy。在 UNIX(包括 Mac OS X)上,NumPy 1.2.1 基本上可以工作,但有一些注意事项。在 Windows 上,与编译过程相关的问题。即将发布的 NumPy 1.3 版本将解决这些问题。对于 SciPy 0.7 在 2.6 支持中剩余的任何问题将在 Bug 修复版本中解决。

Python 3.0 完全不受支持;它需要将 NumPy 移植到 Python 3.0。这需要巨大的工作,因为需要移植大量的 C 代码。向 3.0 的过渡仍在考虑中;目前我们对这一过渡没有时间表或路线图。

主要文档改进

SciPy 文档得到了很大的改进;你可以在线查看 HTML 参考手册online或者下载 PDF 文件。新的参考指南是使用流行的Sphinx 工具构建的。

本版本还包括一个更新的教程,在 2005 年 SciPy 移植到 NumPy 之后一直不可用。尽管不全面,该教程展示了如何使用 Scipy 的几个基本部分。还包括numarray手册中的ndimage文档。

尽管如此,文档仍需要更多的努力。幸运的是,现在贡献到 Scipy 文档比以前更容易:如果发现其中的某一部分需要改进,并希望帮助我们,请在我们的基于 Web 的文档编辑器docs.scipy.org/注册用户名并修正问题。

运行测试

NumPy 1.2 引入了一个基于nose的新测试框架。从这个版本开始,SciPy 现在也使用新的 NumPy 测试框架。利用新的测试框架需要nose版本 0.10 或更高。新框架的一个主要优势是极大地简化了编写单元测试的过程 - 这已经得到了很好的回报,因为测试数量迅速增加。要运行完整的测试套件:

>>> import scipy
>>> scipy.test('full') 

有关更多信息,请参阅NumPy/SciPy 测试指南

我们还大大改善了测试覆盖率。在 0.6.0 版本中有略过 2000 个单元测试;这个版本将近翻了一番,有略过 4000 个单元测试。

构建 SciPy

添加了对 NumScons 的支持。NumScons 是 NumPy/SciPy 的试验性新构建系统,其核心是 SCons

SCons 是一种下一代构建系统,旨在将备受尊敬的 Make 替换为集成了 autoconf/automakeccache 功能的系统。Scons 使用 Python 编写,其配置文件是 Python 脚本。NumScons 旨在替代 NumPy 自定义的 distutils,提供更高级的功能,如 autoconf、改进的 Fortran 支持、更多工具,并支持 numpy.distutils/scons 协作。

移除 Sandbox

在将 SciPy 移植到 NumPy 时(2005 年),几个包和模块被移动到 scipy.sandbox 中。Sandbox 是用于正在快速开发并且其 API 正在变动中的包的临时存放地。它也是损坏代码的存放地。Sandbox 已经达到了其预期目的,但开始引起混乱。因此,移除了 scipy.sandbox。大部分代码被移动到了 scipy 中,一些代码被制作成了 scikit,其余的代码仅仅被删除,因为其功能已被其他代码替代。

稀疏矩阵

稀疏矩阵在多方面得到了改进。现在支持整数类型如 int8uint32 等。增加了两种新的稀疏格式:

  • 新类 dia_matrix:稀疏对角格式

  • 新类 bsr_matrix:块压缩稀疏行格式

添加了几个新的稀疏矩阵构造函数:

  • sparse.kron:稀疏 Kronecker 乘积

  • sparse.bmatnumpy.bmat 的稀疏版本

  • sparse.vstacknumpy.vstack 的稀疏版本

  • sparse.hstacknumpy.hstack 的稀疏版本

添加了子矩阵和非零值的提取:

  • sparse.tril:提取下三角

  • sparse.triu:提取上三角

  • sparse.find:非零值及其索引

csr_matrixcsc_matrix 现在支持切片和花式索引(例如 A[1:3, 4:7]A[[3,2,6,8],:])。现在可以在所有稀疏格式之间进行转换:

  • 使用 .tocsr().tolil() 等成员函数

  • 使用 .asformat() 成员函数,例如 A.asformat('csr')

  • 使用构造函数 A = lil_matrix([[1,2]]); B = csr_matrix(A)

所有稀疏构造函数现在都接受密集矩阵和列表的列表。例如:

  • A = csr_matrix( rand(3,3) )B = lil_matrix( [[1,2],[3,4]] )

spdiags 函数中对对角线的处理已更改。现在与 MATLAB(TM) 中同名函数一致。

对格式转换和稀疏矩阵运算进行了许多效率改进。最后,此版本包含了许多错误修复。

统计包

添加了带遮蔽数组的统计函数,并通过 scipy.stats.mstats 访问。这些函数类似于 scipy.stats 中的对应函数,但其接口和算法尚未经过验证。

对于统计函数修复了几个错误,其中 kstestpercentileofscore 增加了新的关键字参数。

对于 meanmedianvarstdcovcorrcoef 添加了弃用警告。这些函数应该用它们的 numpy 对应函数替换。但请注意,scipy.stats 和 numpy 版本的一些默认选项有所不同。

stats.distributions 进行了大量的错误修复:所有通用方法现在都能正常工作,个别分布的几个方法已经修正。然而,一些高阶矩(skewkurtosis)和熵仍存在一些问题。最大似然估计器 fit 对于某些分布不能直接使用 - 在某些情况下,必须仔细选择起始值,而在其他情况下,最大似然方法的通用实现可能不是数值上适当的估计方法。

我们预计在下一个版本的 scipy 中会有更多的错误修复、数值精度提高和功能增强。

IO 包的重构

NumPy 和 SciPy 中的 IO 代码正在进行广泛的重构。NumPy 将是读写 NumPy 数组的基本代码所在,而 SciPy 将包含各种数据格式(数据、音频、视频、图像、matlab 等)的文件读写器。

scipy.io 中的几个函数已被弃用,并将在 0.8.0 版本中移除,包括 npfilesaveloadcreate_modulecreate_shelfobjloadobjsavefopenread_arraywrite_arrayfreadfwritebswappackbitsunpackbitsconvert_objectarray。其中一些函数已被 NumPy 的原始读写能力、内存映射能力或数组方法所取代。其他函数已从 SciPy 移至 NumPy,因为现在基本的数组读写能力由 NumPy 处理。

Matlab(TM) 文件的读写功能有了多项改进:

  • 默认版本 5

  • v5 版本新增了结构体、单元数组和对象的写入功能。

  • v5 版本新增了函数句柄和 64 位整数的读写功能。

  • loadmat 新增了 struct_as_record 关键字参数,用于将 Matlab 中的结构数组加载为 NumPy 中的记录数组。

  • 字符串数组的 dtype 现在为 'U...',而不是 dtype=object

  • loadmat 不再挤压单维度,默认情况下为 squeeze_me=False

新的层次聚类模块

该模块为 scipy.cluster 包添加了新的层次聚类功能。函数接口与 MATLAB(TM) 的统计工具箱提供的函数类似,以帮助更轻松地迁移到 NumPy/SciPy 框架。实现的链接方法包括单链接、完全链接、平均链接、加权链接、质心链接、中位数链接和 Ward 链接。

此外,还提供了几个用于计算不一致性统计量、科菲尼特距离和后代之间的最大距离的函数。fclusterfclusterdata 函数将分层聚类转换为一组扁平聚类。由于这些扁平聚类是通过将树切成森林来生成的,leaders 函数接受一个链接和一个扁平聚类,并找到每棵树在森林中的根。ClusterNode 类将分层聚类表示为一个可导航的树对象。to_tree 将矩阵编码的分层聚类转换为 ClusterNode 对象。还提供了在 MATLAB 和 SciPy 链接编码之间转换的函数。最后,dendrogram 函数使用 matplotlib 将分层聚类绘制为树状图。

新空间包

新的空间包包含一系列空间算法和数据结构,适用于空间统计和聚类应用。它包括快速编译的代码,用于计算精确和近似最近邻居,以及支持注释和各种其他算法的纯 Python kd 树,其接口与之相同。这两个模块的 API 可能会有所变化,以满足用户需求。

还包括一个 distance 模块,包含用于计算向量之间距离和不相似度的集合函数,对于空间统计、聚类和 kd 树非常有用。提供的距离和不相似度函数包括 Bray-Curtis、Canberra、Chebyshev、City Block、Cosine、Dice、Euclidean、Hamming、Jaccard、Kulsinski、Mahalanobis、Matching、Minkowski、Rogers-Tanimoto、Russell-Rao、Squared Euclidean、Standardized Euclidean、Sokal-Michener、Sokal-Sneath 和 Yule。

pdist 函数计算一组向量中所有无序对的成对距离。cdist 计算两组向量笛卡尔乘积中所有向量对的距离。成对距离矩阵以压缩形式存储;仅存储上三角部分。squareform 在方形和压缩形式之间转换距离矩阵。

重做的 fftpack 包

FFTW2、FFTW3、MKL 和 DJBFFT 包装已移除。只剩下(NETLIB)fftpack。专注于一个后端,我们希望更轻松地添加新功能 - 如 float32 支持。

新常数包

scipy.constants 提供一系列物理常数和转换因子。这些常数取自 CODATA 推荐的基本物理常数值:2002 年。可以在 physics.nist.gov/constants 找到这些值。这些值以物理常数字典中的元组形式存储,包含值、单位和相对精度 - 依次排列。除非另有说明,所有常数均以国际单位制(SI 单位)表示。还提供了几个辅助函数。

新的径向基函数模块

scipy.interpolate 现在包含径向基函数模块。径向基函数可用于 n 维中散点数据的平滑/插值,但在超出观察数据范围的外推时应谨慎使用。

新的复杂 ODE 积分器

scipy.integrate.ode 现在包含 ZVODE 复值常微分方程求解器的包装器(由 Peter N. Brown, Alan C. Hindmarsh 和 George D. Byrne 开发)。

新的广义对称和厄米矩阵特征值问题求解器

scipy.linalg.eigh 现在包含更多 LAPACK 对称和厄米矩阵特征值问题求解器的包装器。用户现在可以解决广义问题,仅选择一定范围的特征值,并选择在内存使用增加的代价下使用更快的算法。scipy.linalg.eigh 的签名相应更改了。

插值包中的 Bug 修复

scipy.interpolate.interp1d 的返回值形状曾经不正确,如果插值数据超过 2 维并且轴关键字设置为非默认值。这已经修复。此外,如果输入是标量,interp1d 现在返回一个标量(0 维数组)。如果依赖先前行为的代码使用 scipy.interpolate.interp1d 的用户可能需要重新审视他们的代码。

清理 weave

scipy.weave 有多项改进。blitz++ 的作者重新授权以与 SciPy 许可证兼容。删除了 wx_spec.py

已知问题

下面是 scipy 0.7.0 已知的问题:

  • Windows 上的 weave 测试失败:这些是已知问题,正在进行修订。

  • 使用 gcc 4.3(std::labs)的 weave 测试失败:这是 gcc 4.3 的一个 bug。一个解决方法是在 scipy/weave/blitz/blitz/funcs.h(第 27 行)添加 #include <cstdlib>。您可以在已安装的 scipy(位于 site-packages 中)中进行更改。

posted @ 2024-06-27 17:07  绝不原创的飞龙  阅读(11)  评论(0编辑  收藏  举报