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
實作了許多有效率的圖演算法,用於儲存為稀疏鄰接矩陣的圖。可用的常式有
connected_components
- 判斷圖的連通元件
laplacian
- 計算圖的拉普拉斯算符
shortest_path
- 計算正圖上點之間的最短路徑
dijkstra
- 使用 Dijkstra 演算法計算最短路徑
floyd_warshall
- 使用 Floyd-Warshall 演算法計算最短路徑
breadth_first_order
- 計算節點的廣度優先順序
depth_first_order
- 計算節點的深度優先順序
breadth_first_tree
- 從給定節點建構廣度優先樹
depth_first_tree
- 從給定節點建構深度優先樹
minimum_spanning_tree
- 建構圖的最小生成樹
scipy.optimize
改進#
最佳化模組在此版本中受到了很多關注。除了新增的測試、文件改進、錯誤修復和程式碼清理之外,還進行了以下改進
新增了多變數和單變數函數最小化器的統一介面。
新增了多變數函數尋根演算法的統一介面。
L-BFGS-B 演算法已更新至 3.0 版。
統一的最小化器介面#
新增了兩個新函數 scipy.optimize.minimize
和 scipy.optimize.minimize_scalar
,分別為多變數和單變數函數的最小化器提供通用介面。對於多變數函數,scipy.optimize.minimize
為無約束最佳化方法 (fmin
、fmin_powell
、fmin_cg
、fmin_ncg
、fmin_bfgs
和 anneal) 或約束最佳化方法 (fmin_l_bfgs_b
、fmin_tnc
、fmin_cobyla
和 fmin_slsqp
) 提供介面。對於單變數函數,scipy.optimize.minimize_scalar
為無約束和有界最佳化方法 (brent
、golden
、fminbound
) 提供介面。這使得更容易比較和切換求解器。
統一的尋根演算法介面#
新函數 scipy.optimize.root
為多變數函數的尋根演算法提供通用介面,嵌入了 fsolve
、leastsq
和 nonlin
求解器。
scipy.linalg
改進#
新的矩陣方程式求解器#
Sylvester 方程式 (scipy.linalg.solve_sylvester
)、離散和連續 Lyapunov 方程式 (scipy.linalg.solve_lyapunov
、scipy.linalg.solve_discrete_lyapunov
) 以及離散和連續代數 Riccati 方程式 (scipy.linalg.solve_continuous_are
、scipy.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.diags
和 scipy.sparse.block_diag
,分別用於輕鬆建構對角線和區塊對角線稀疏矩陣。
scipy.sparse.csc_matrix
和 csr_matrix
現在支援運算 sin
、tan
、arcsin
、arctan
、sinh
、tanh
、arcsinh
、arctanh
、rint
、sign
、expm1
、log1p
、deg2rad
、rad2deg
、floor
、ceil
和 trunc
。先前,這些運算必須透過對矩陣的 data
屬性進行運算來執行。
LSMR 迭代求解器#
LSMR,一種用於求解 (稀疏) 線性和線性最小平方系統的迭代方法,已新增為 scipy.sparse.linalg.lsmr
。
離散正弦變換#
離散正弦變換函數的綁定已新增至 scipy.fftpack
。
scipy.interpolate
改進#
對於球座標中的內插,已新增三個類別 scipy.interpolate.SmoothSphereBivariateSpline
、scipy.interpolate.LSQSphereBivariateSpline
和 scipy.interpolate.RectSphereBivariateSpline
。
分箱統計 (scipy.stats
)#
stats 模組已獲得執行分箱統計的函數,這是直方圖在 1-D、2-D 和多個維度中的推廣:scipy.stats.binned_statistic
、scipy.stats.binned_statistic_2d
和 scipy.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
中所有分佈的 xa 和 xb 參數已經未使用;它們現在已被棄用。
向後不相容的變更#
移除 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_ode
的 y
屬性的行為已變更。先前,它以以下形式表示複數值解
z = ode.y[::2] + 1j * ode.y[1::2]
現在,它直接是複數值解
z = ode.y
T 檢定行為的微小變更#
T 檢定 scipy.stats.ttest_ind
、scipy.stats.ttest_rel
和 scipy.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
關鍵字引數。