SciPy 0.9.0 發行說明#
SciPy 0.9.0 是 6 個月辛勤工作的成果。它包含許多新功能、大量的錯誤修正、改善的測試覆蓋率和更完善的文件。此版本中進行了許多棄用和 API 變更,如下所述。 建議所有使用者升級到此版本,因為其中有大量的錯誤修正和最佳化。此外,我們的開發重心現在將轉移到 0.9.x 分支上的錯誤修正版本,以及在開發主幹上新增新功能。
此版本需要 Python 2.4 - 2.7 或 3.1 以上版本,以及 NumPy 1.5 或更高版本。
請注意,由於我們正朝著 SciPy 1.0.0 版本邁進,因此 SciPy 仍被視為具有「Beta」狀態。 1.0.0 版本將標誌著 SciPy 開發的一個重要里程碑,在此之後,變更套件結構或 API 將變得更加困難。 雖然這些 1.0 之前的版本被認為具有「Beta」狀態,但我們致力於使其盡可能沒有錯誤。
然而,在 1.0 版本發布之前,我們正在積極審查和完善功能、組織和介面。 這樣做的目的是使套件盡可能連貫、直觀和實用。 為了實現這一點,我們需要使用者社群的幫助。 具體來說,我們需要關於專案各個方面的回饋意見 - 從我們實作的演算法,到關於我們函數呼叫簽章的詳細資訊 - 所有的一切。
Python 3#
Scipy 0.9.0 是第一個支援 Python 3 的 SciPy 版本。 唯一尚未移植的模組是 scipy.weave
。
Scipy 原始碼位置即將變更#
在此版本發布後不久,Scipy 將停止使用 SVN 作為版本控制系統,並轉移到 Git。 從那時起,可以在以下位置找到 Scipy 的開發原始碼
新功能#
Delaunay 鑲嵌 (scipy.spatial
)#
Scipy 現在包含用於計算 N 維度 Delaunay 鑲嵌的常式,由 Qhull 計算幾何庫提供支援。 此類計算現在可以使用新的 scipy.spatial.Delaunay
介面。
N 維度內插 (scipy.interpolate
)#
對分散式資料內插的支援現在已顯著改善。 此版本包含一個 scipy.interpolate.griddata
函數,可以對 N 維分散式資料執行線性內插和最近鄰內插,以及 2D 和 1D 中的三次樣條 (C1-平滑) 內插。 每個內插器類型的物件導向介面也可用。
非線性方程式求解器 (scipy.optimize
)#
Scipy 在 scipy.optimize
中包含用於大規模非線性方程式求解的新常式。 實作了以下方法
牛頓-克雷洛夫法 (
scipy.optimize.newton_krylov
)(廣義) 正割法
有限記憶體 Broyden 法 (
scipy.optimize.broyden1
、scipy.optimize.broyden2
)安德森法 (
scipy.optimize.anderson
)
簡單迭代法 (
scipy.optimize.diagbroyden
、scipy.optimize.excitingmixing
、scipy.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_atten
和 scipy.signal.kaiser_beta
函數。
改良的統計檢定 (scipy.stats
)#
新增了一個新函數 scipy.stats.fisher_exact
,它為 2x2 列聯表提供費雪精確檢定。
重寫了 scipy.stats.kendalltau
函數,使其速度更快 (O(n log(n)) vs O(n^2))。
已棄用功能#
過時的非線性求解器 (在 scipy.optimize
中)#
來自 scipy.optimize
的以下非線性求解器已被棄用
broyden_modified
(效能不佳)broyden1_modified
(效能不佳)broyden_generalized
(等同於anderson
)anderson2
(等同於anderson
)broyden3
(已被新的有限記憶體 broyden 方法取代)vackar
(已重新命名為diagbroyden
)
已移除功能#
已從 scipy.misc
中移除已棄用的模組 helpmod
、pexec
和 ppimport
。
已移除許多 scipy.ndimage
內插函數中的 output_type
關鍵字。
已移除 scipy.linalg.qr
中的 econ
關鍵字。 透過指定 mode='economic'
仍然可以使用相同的功能。
舊的關聯/卷積行為 (在 scipy.signal
中)#
scipy.signal.convolve
、scipy.signal.convolve2d
、scipy.signal.correlate
和 scipy.signal.correlate2d
的舊行為已在 0.8.0 中棄用,現在已移除。 如果第二個引數的維度大於第一個引數,並且模式相對於具有最大維度的輸入,則卷積和關聯過去會交換其引數。 目前的行為是永遠不交換輸入,這才是大多數人期望的,也是關聯通常的定義方式。
scipy.stats
#
已移除 scipy.stats
中的許多函數,這些函數可從 numpy 取得或已被取代,並且自 0.7 版以來已被棄用:std、var、mean、median、cov、corrcoef、z、zs、stderr、samplestd、samplevar、pdfapprox、pdf_moments 和 erfc。 這些變更反映在 scipy.stats.mstats
中。
scipy.sparse
#
已移除 scipy.sparse
中稀疏矩陣類別的幾個方法,這些方法自 0.7 版以來已被棄用:save、rowcol、getdata、listprint、ensure_sorted_indices、matvec、matmat 和 rmatvec。
已從 scipy.sparse
中移除函數 spkron
、speye
、spidentity
、lil_eye
和 lil_diags
。 前三個函數仍然可以作為 scipy.sparse.kron
、scipy.sparse.eye
和 scipy.sparse.identity
使用。
已從稀疏矩陣建構函式中移除 dims 和 nzmax 關鍵字。 已分別從 CSR 和 CSC 矩陣中移除 colind 和 rowind 屬性。
scipy.sparse.linalg.arpack.speigs
#
已移除 ARPACK 庫的重複介面。
其他變更#
ARPACK 介面變更#
變更了 scipy.sparse.linalg
中 ARPACK 特徵值常式的介面,以提高穩健性。
如果特徵值迭代無法收斂,則特徵值和 SVD 常式現在會引發 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