SciPy 0.14.0 發行說明#

SciPy 0.14.0 是 8 個月辛勤工作的成果。它包含許多新功能、大量的錯誤修復、改進的測試覆蓋率和更好的文件。此版本中有許多棄用和 API 變更,如下文所述。鼓勵所有使用者升級到此版本,因為其中有大量的錯誤修復和最佳化。此外,我們的開發注意力現在將轉移到 0.14.x 分支上的錯誤修復版本,以及在主分支上新增新功能。

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

新功能#

scipy.interpolate 改進#

新增了用於在規則網格上插值的新包裝函式 scipy.interpolate.interpninterpn 支援任意維度的線性插值和最近鄰插值,以及二維的 spline 插值。

以 power 和 Bernstein 多項式為基底的分段多項式的更快實作已新增為 scipy.interpolate.PPolyscipy.interpolate.BPoly。新使用者應使用這些來取代 scipy.interpolate.PiecewisePolynomial

scipy.interpolate.interp1d 現在接受非單調輸入並對其進行排序。如果效能至關重要,則可以使用新的 assume_sorted 關鍵字來關閉排序。

已新增在 scipy.interpolate 中評估雙變數 spline 導數的功能。

新類別 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 和相關函式(用於設計 Butterworth、Chebyshev、橢圓和 Bessel IIR 濾波器)現在都改為在內部使用極零點(“zpk”)格式,而不是使用轉換為分子/分母格式。因此,產生的濾波器(尤其是高階濾波器)的準確性得到了顯著提高。

Savitzky-Golay 濾波器已透過新函式 scipy.signal.savgol_filterscipy.signal.savgol_coeffs 新增。

新函式 scipy.signal.vectorstrength 計算一組事件的向量強度(一種相位同步性量度)。

scipy.special 改進#

已新增函式 scipy.special.boxcoxscipy.special.boxcox1p,它們計算 Box-Cox 轉換。

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: 如果給定 B,scipy.linalg.eig 不會正規化特徵向量…

  • #1866: invgamma 的統計資訊 (Trac #1340)

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

  • #1887: 統計連續分佈 - 浮點警告 (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 錯誤地轉換為 float,並且失敗…

  • #2396: |z| > 1 的 lpmn 結果錯誤 (Trac #1877)

  • #2398: ss2tf 傳回 num 作為 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 傳回 2 個空陣列的元組…

  • #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 的 entropy 不正確?!

  • #2998: 修復 numpy 版本比較

  • #3002: python setup.py install 失敗

  • #3014: stats.fisher_exact 中的錯誤

  • #3030: 使用 scipy.stats.distribution.entropy 時的相對 entropy…

  • #3037: 當輸入…時,scipy.optimize.curve_fit 導致意外行為

  • #3047: mstats.ttest_rel axis=None,需要遮罩陣列

  • #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: ‘sqeuclidean’ 度量的 cdist 效能問題

  • #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 實作 (關閉 #2931)…

  • #2942: Eclipse PyDev 靜態程式碼分析指出的其他修復

  • #2946: ENH: 允許在 interp1d 中使用非單調輸入

  • #2986: BUG: runtests: 在執行測試時從根目錄切換目錄

  • #2987: DOC: linalg: 不要推薦 np.linalg.norm

  • #2992: ENH: 將 “limit” 參數新增至 dijkstra 計算

  • #2995: ENH: 使用 int 形狀

  • #3006: DOC: stats: 將對數基底附註新增至文件字串

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

  • #3008: 修復 mstats.kurtosistest,以及 skewtest/normaltest 的測試覆蓋率

  • #3009: Minor reST typo

  • #3010: 將 scipy.optimize.Result 新增至 API 文件

  • #3012: 更正文件錯誤

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

  • #3064: Binned statistic

  • #3068: 修復問題 #3067 修復 cumptrapz,該函式在…時引發例外

  • #3073: Arff 讀取器,標稱值為 1 個字元

  • #3074: 一些維護工作

  • #3080: 檢閱並清理所有 Box-Cox 函數

  • #3083: 錯誤:若未找到區域應回傳 0

  • #3085: 錯誤:在 IIR 濾波器設計中使用 zpk 以提升準確度

  • #3101: 稍微重構統計測試

  • #3112: 強化:實作一維 Akima 插值

  • #3123: 維護:更簡易地從切片建立範圍的方法

  • #3124: 檔案物件支援 imread 和 imsave

  • #3126: 使 stats/distributions.py 符合 pep8 規範

  • #3134: 維護:將 distributions.py 分割成三個檔案

  • #3138: 清理離散分佈的測試

  • #3155: special: 處理 pdtr、pdtrc 和 pdtrik 中 lambda=0 的邊緣情況

  • #3156: 將 optimize.Result 重新命名為 OptimizeResult

  • #3166: 錯誤:使 curve_fit() 能夠處理類陣列輸入。關閉 gh-3037。

  • #3170: 修正 numpy 版本檢查

  • #3175: 使用 numpy sinc

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

  • #3178: 棄用:移除已棄用的 umfpack 包裝器。關閉 gh-3002。

  • #3179: 文件:將 BPoly 加入文件

  • #3180: 執行 stats.test() 時抑制警告

  • #3181: 變更 mstats 中的 sem 函數以符合 stats

  • #3182: 使 weave 測試正常運作

  • #3183: 強化:將 k 樣本 Anderson-Darling 檢定加入 stats 模組

  • #3186: 修正 stats.scoreatpercentile

  • #3187: 文件:使 curve_fit 命名慣例與 leastsq 相同

  • #3201: 在樹狀圖函數中加入 axis 關鍵字

  • #3207: 使 stats.distributions 文件字串中的範例文件字串可執行

  • #3218: 錯誤:integrate: 修正 “vode” 中的帶狀 Jacobian 處理及…

  • #3222: 錯誤:限制 special.nctdtr 中的輸入範圍

  • #3223: 修正 numpy master 的測試錯誤

  • #3224: 修正 sparsetools 中的 int32 溢位

  • #3228: 文件:tf2ss zpk2ss 註記控制器標準形式

  • #3234: 在濾波器設計 *ord 函數中加入「另請參閱」連結和範例圖表

  • #3235: 更新 buttord 函數以與其他函數一致…

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

  • #3240: 文件:修正 BPoly 文件字串中的 ReST 錯誤

  • #3241: 重構:檢查檔案物件的寫入屬性而不進行寫入

  • #3243: 在 stats 中進行一些維護工作

  • #3245: 錯誤/強化:stats: 使凍結分佈持有個別實例

  • #3247: 強化函數以在某些稀疏矩陣中回傳每行/列的 nnz

  • #3248: 強化更有效率的稀疏矩陣軸向最小值/最大值

  • #3252: 快速 sqeuclidean

  • #3253: 修正支援稀疏矩陣 reduce 方法的 axis=-1 和 -2

  • #3254: 測試:針對稀疏矩陣運算的非標準輸入進行測試

  • #3272: 錯誤:sparse: 修正 dia_matrix.setdiag 中的錯誤

  • #3278: 執行 paver sdist 時也產生 tar.xz

  • #3286: 文件:更新 0.14.0 發行說明。

  • #3289: 測試:移除測試中不安全的 mktemp 使用

  • #3292: 維護:修正 stats.distributions.__all__ 的向後不相容變更

  • #3293: 強化:signal: 允許 ‘hyperbolic’ 中頻率的向上掃頻…

  • #3302: 強化:在 stats.mstats.gmean 和 stats.mstats.hmean 中加入 dtype 參數

  • #3307: 文件:在 tf2zpk 中加入關於不同 ba 形式的註記

  • #3309: 增強 scipy.stats.mstats.winsorize 的文件

  • #3310: 文件:釐清 mmio 文件字串中的矩陣與陣列

  • #3314: 錯誤:修正在 Python 3 下 scipy.io.mmread() 讀取 gzip 檔案的問題

  • #3323: 強化:在任意維度的正規網格上進行有效率的插值

  • #3332: 文件:清理 scipy.special 文件

  • #3335: 強化:改善 nanmedian 效能

  • #3347: 錯誤:修正 stats.fisher_exact 中 np.max 的使用

  • #3356: 強化:sparse: 透過 Cython 加速 LIL 索引 + 賦值

  • #3357: 修正 “imresize 在 size = int 時無法運作” 的問題

  • #3358: 維護:將 AkimaInterpolator 重新命名為 Akima1DInterpolator

  • #3366: 空白字元:sparse: 重新縮排 dsolve/*.c *.h

  • #3367: 錯誤:sparse/dsolve: 修正 superlu 中稠密矩陣 Fortran 順序的錯誤…

  • #3369: 強化 minimize, minimize_scalar: 加入使用者提供的支援…

  • #3371: scipy.stats.sigmaclip 未出現在 html 文件中。

  • #3373: 錯誤:sparse/dsolve: 偵測 superlu 中無效的 LAPACK 參數…

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

  • #3377: 維護:使 travis 建置針對 Numpy 1.5 的單一目標

  • #3378: 維護:fftpack: 移除幾個測試中 'import *' 的使用…

  • #3381: 維護:將 np.isinf(x) & (x>0) 取代為 np.isposinf(x) 以避免…

  • #3383: 維護:在沒有 float96 的平台上跳過 float96 測試

  • #3384: 維護:將 pyflakes 加入 Travis-CI

  • #3386: 錯誤:expit 的穩定評估

  • #3388: 錯誤:SuperLU: 修正 dlamch 的遺失宣告

  • #3389: 錯誤:sparse: 在需要時安全地將 64 位元索引向下轉換為 intp

  • #3390: 錯誤:非線性求解器不會被幸運猜測混淆

  • #3391: 測試:修正因 np.matrix.sum() 中 axis=-1,-2 用法造成的稀疏矩陣測試錯誤。

  • #3392: 錯誤:sparse/lil: 修正融合類型查找中的 Cython 錯誤

  • #3393: 錯誤:sparse/compressed: 繞過早期版本 np.unique 中的錯誤…

  • #3394: 錯誤:允許非根節點的 ClusterNode.pre_order()

  • #3400: 錯誤:cluster.linkage ValueError 錯字錯誤

  • #3402: 錯誤:special: 在 specfun.f 中,將 CMPLX 的使用替換為 DCMPLX,…

  • #3408: 維護:sparse: Numpy 1.5 相容性修正

  • #3410: 維護:interpolate: 修正 _ppoly 中的 blas 定義

  • #3411: 維護:interpolate 中的 Numpy 1.5 修正

  • #3413: 修正更多舊版本 numpy 的測試問題

  • #3414: 測試:signal: 放寬濾波器測試中的一些誤差容忍度…

  • #3415: 維護:tools: 自動化發行版本的關閉 issue + pr 清單…

  • #3440: 維護:手動包裝 sparsetools 而非透過 SWIG

  • #3460: 測試:以二進制模式開啟影像檔案

  • #3467: 錯誤:修正 csgraph.shortest_path 中的驗證