SciPy 0.11.0 發行說明#

SciPy 0.11.0 是 8 個月辛勤工作的成果。它包含許多新功能、大量的錯誤修復、改進的測試覆蓋率和更好的文件。此版本的重點是

  • 新增了一個新模組,提供許多常見的稀疏圖演算法。

  • 為現有的最佳化和尋根函數新增了新的統一介面。

建議所有使用者升級到此版本,因為其中有大量的錯誤修復和最佳化。我們的開發注意力現在將轉移到 0.11.x 分支上的錯誤修復版本,以及在 master 分支上新增新功能。

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

新功能#

稀疏圖子模組#

新的子模組 scipy.sparse.csgraph 實作了許多有效率的圖演算法,用於儲存為稀疏鄰接矩陣的圖。可用的常式有

scipy.optimize 改進#

最佳化模組在此版本中受到了很多關注。除了新增的測試、文件改進、錯誤修復和程式碼清理之外,還進行了以下改進

  • 新增了多變數和單變數函數最小化器的統一介面。

  • 新增了多變數函數尋根演算法的統一介面。

  • L-BFGS-B 演算法已更新至 3.0 版。

統一的最小化器介面#

新增了兩個新函數 scipy.optimize.minimizescipy.optimize.minimize_scalar,分別為多變數和單變數函數的最小化器提供通用介面。對於多變數函數,scipy.optimize.minimize 為無約束最佳化方法 (fminfmin_powellfmin_cgfmin_ncgfmin_bfgsanneal) 或約束最佳化方法 (fmin_l_bfgs_bfmin_tncfmin_cobylafmin_slsqp) 提供介面。對於單變數函數,scipy.optimize.minimize_scalar 為無約束和有界最佳化方法 (brentgoldenfminbound) 提供介面。這使得更容易比較和切換求解器。

統一的尋根演算法介面#

新函數 scipy.optimize.root 為多變數函數的尋根演算法提供通用介面,嵌入了 fsolveleastsqnonlin 求解器。

scipy.linalg 改進#

新的矩陣方程式求解器#

Sylvester 方程式 (scipy.linalg.solve_sylvester)、離散和連續 Lyapunov 方程式 (scipy.linalg.solve_lyapunovscipy.linalg.solve_discrete_lyapunov) 以及離散和連續代數 Riccati 方程式 (scipy.linalg.solve_continuous_arescipy.linalg.solve_discrete_are) 的求解器已新增至 scipy.linalg。這些求解器通常用於線性控制理論領域。

QZ 和 QR 分解#

現在可以使用 scipy.linalg.qz 計算 QZ 或廣義 Schur 分解。此函數包裝了 LAPACK 常式 sgges、dgges、cgges 和 zgges。

新增了函數 scipy.linalg.qr_multiply,可有效計算 Q (來自 QR 分解) 和向量的矩陣乘積。

帕斯卡矩陣#

新增了一個用於建立帕斯卡矩陣的函數 scipy.linalg.pascal

稀疏矩陣建構和運算#

新增了兩個新函數 scipy.sparse.diagsscipy.sparse.block_diag,分別用於輕鬆建構對角線和區塊對角線稀疏矩陣。

scipy.sparse.csc_matrixcsr_matrix 現在支援運算 sintanarcsinarctansinhtanharcsinharctanhrintsignexpm1log1pdeg2radrad2degfloorceiltrunc。先前,這些運算必須透過對矩陣的 data 屬性進行運算來執行。

LSMR 迭代求解器#

LSMR,一種用於求解 (稀疏) 線性和線性最小平方系統的迭代方法,已新增為 scipy.sparse.linalg.lsmr

離散正弦變換#

離散正弦變換函數的綁定已新增至 scipy.fftpack

scipy.interpolate 改進#

對於球座標中的內插,已新增三個類別 scipy.interpolate.SmoothSphereBivariateSplinescipy.interpolate.LSQSphereBivariateSplinescipy.interpolate.RectSphereBivariateSpline

分箱統計 (scipy.stats)#

stats 模組已獲得執行分箱統計的函數,這是直方圖在 1-D、2-D 和多個維度中的推廣:scipy.stats.binned_statisticscipy.stats.binned_statistic_2dscipy.stats.binned_statistic_dd

已棄用的功能#

scipy.sparse.cs_graph_components 已成為稀疏圖子模組的一部分,並重新命名為 scipy.sparse.csgraph.connected_components。呼叫先前的常式將導致棄用警告。

scipy.misc.radon 已被棄用。在 scikits-image 中可以找到功能更完整的 radon 轉換。

scipy.io.save_as_module 已被棄用。儲存多個 Numpy 陣列的更好方法是 numpy.savez 函數。

scipy.stats.distributions 中所有分佈的 xaxb 參數已經未使用;它們現在已被棄用。

向後不相容的變更#

移除 scipy.maxentropy#

在 0.10.0 版本中已棄用的 scipy.maxentropy 模組已被移除。scikits.learn 中的邏輯迴歸是此功能的良好且現代的替代方案。

splev 行為的微小變更#

對於大小為 1 的陣列,spline 評估函數現在的行為與 interp1d 類似。先前的行為

>>> from scipy.interpolate import splev, splrep, interp1d
>>> x = [1,2,3,4,5]
>>> y = [4,5,6,7,8]
>>> tck = splrep(x, y)
>>> splev([1], tck)
4.
>>> splev(1, tck)
4.

修正後的行為

>>> splev([1], tck)
array([ 4.])
>>> splev(1, tck)
array(4.)

這也影響了 UnivariateSpline 類別。

scipy.integrate.complex_ode 的行為#

complex_odey 屬性的行為已變更。先前,它以以下形式表示複數值解

z = ode.y[::2] + 1j * ode.y[1::2]

現在,它直接是複數值解

z = ode.y

T 檢定行為的微小變更#

T 檢定 scipy.stats.ttest_indscipy.stats.ttest_relscipy.stats.ttest_1samp 已變更,因此 0 / 0 現在傳回 NaN 而不是 1。

其他變更#

scipy.sparse.linalg 中的 SuperLU 原始碼已從上游更新至 4.3 版。

已新增函數 scipy.signal.bode,用於計算連續時間系統的幅度和相位資料。

雙樣本 T 檢定 scipy.stats.ttest_ind 獲得了一個選項,可以比較具有不等變異數的樣本,即 Welch's T 檢定。

scipy.misc.logsumexp 現在採用可選的 axis 關鍵字引數。

作者#

此版本包含以下人員的工作 (至少為此版本貢獻了一個修補程式,名稱按字母順序排列)

  • Jeff Armstrong

  • Chad Baker

  • Brandon Beacher +

  • behrisch +

  • borishim +

  • Matthew Brett

  • Lars Buitinck

  • Luis Pedro Coelho +

  • Johann Cohen-Tanugi

  • David Cournapeau

  • dougal +

  • Ali Ebrahim +

  • endolith +

  • Bjørn Forsman +

  • Robert Gantner +

  • Sebastian Gassner +

  • Christoph Gohlke

  • Ralf Gommers

  • Yaroslav Halchenko

  • Charles Harris

  • Jonathan Helmus +

  • Andreas Hilboll +

  • Marc Honnorat +

  • Jonathan Hunt +

  • Maxim Ivanov +

  • Thouis (Ray) Jones

  • Christopher Kuster +

  • Josh Lawrence +

  • Denis Laxalde +

  • Travis Oliphant

  • Joonas Paalasmaa +

  • Fabian Pedregosa

  • Josef Perktold

  • Gavin Price +

  • Jim Radford +

  • Andrew Schein +

  • Skipper Seabold

  • Jacob Silterra +

  • Scott Sinclair

  • Alexis Tabary +

  • Martin Teichmann

  • Matt Terry +

  • Nicky van Foreest +

  • Jacob Vanderplas

  • Patrick Varilly +

  • Pauli Virtanen

  • Nils Wagner +

  • Darryl Wally +

  • Stefan van der Walt

  • Liming Wang +

  • David Warde-Farley +

  • Warren Weckesser

  • Sebastian Werk +

  • Mike Wimmer +

  • Tony S Yu +

總共有 55 人為此版本做出了貢獻。姓名旁帶有「+」號的人是第一次貢獻修補程式。