SciPy 0.13.0 發行說明#

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

此版本需要 Python 2.6、2.7 或 3.1-3.3 以及 NumPy 1.5.1 或更高版本。此版本的重點包括

  • 支援稀疏矩陣的花式索引和布林比較

  • linalg 模組中的內插分解和矩陣函數

  • 兩個新的信賴域求解器,用於無約束最小化

新功能#

scipy.integrate 改進#

N 維數值積分#

新增了一個新函數 scipy.integrate.nquad,它提供了 N 維積分功能,介面比 dblquadtplquad 更靈活。

dopri* 改進#

現在可以通過 solout 回調函數訪問 dopri ODE 求解器系列的intermediate result。

scipy.linalg 改進#

內插分解#

Scipy 現在包含一個新模組 scipy.linalg.interpolative,其中包含用於計算內插矩陣分解 (ID) 的例程。此功能基於 P.G. Martinsson、V. Rokhlin、Y. Shkolnisky 和 M. Tygert 的 ID 軟體包,先前在 K.L. Ho 的 PymatrixId 軟體包中針對 Python 進行了調整。

極分解#

新增了一個新函數 scipy.linalg.polar,用於計算矩陣的極分解。

BLAS level 3 函數#

BLAS 函數 symmsyrksyr2khemmherkher2k 現在被封裝在 scipy.linalg 中。

矩陣函數#

已實作或更新了多種矩陣函數演算法,這些演算法遵循 Nick Higham 及其合著者最近論文中的詳細描述。這些包括矩陣平方根 (sqrtm)、矩陣對數 (logm)、矩陣指數 (expm) 及其 Frechet 導數 (expm_frechet) 以及分數矩陣冪 (fractional_matrix_power)。

scipy.optimize 改進#

信賴域無約束最小化演算法#

minimize 函數獲得了兩個用於無約束最小化的信賴域求解器:doglegtrust-ncg

scipy.sparse 改進#

布林比較和稀疏矩陣#

所有稀疏矩陣類型現在都支援布林資料和布林運算。兩個稀疏矩陣 AB 可以以所有預期的方式進行比較 A < BA >= BA != B,產生與密集 Numpy 陣列相似的結果。也支援與密集矩陣和純量的比較。

CSR 和 CSC 花式索引#

壓縮稀疏行和列稀疏矩陣類型現在支援使用布林矩陣、切片和列表進行花式索引。因此,當 A 是(CSC 或 CSR)稀疏矩陣時,您可以執行以下操作

>>> A[A > 0.5] = 1  # since Boolean sparse matrices work
>>> A[:2, :3] = 2
>>> A[[1,2], 2] = 3

scipy.sparse.linalg 改進#

新函數 onenormest 提供了線性算子 1-範數的下限,並已根據 Higham 和 Tisseur (2000) 實作。此函數不僅適用於稀疏矩陣,還可用於估計密集矩陣的乘積或冪的範數,而無需顯式建構中間矩陣。

線性算子的矩陣指數的乘法作用 (expm_multiply) 已根據 Al-Mohy 和 Higham (2011) 中的描述實作。

抽象線性算子 (scipy.sparse.linalg.LinearOperator) 現在可以相乘、相加和取冪,產生新的線性算子。這使得更容易建構複合線性運算。

scipy.spatial 改進#

現在可以通過 vertices 屬性訪問 ConvexHull 的頂點,這在 2-D 中給出了正確的方向。

scipy.signal 改進#

新增了餘弦窗函數 scipy.signal.cosine

scipy.special 改進#

新增了新函數 scipy.special.xlogyscipy.special.xlog1py。這些函數可以簡化和加速必須計算 x * log(y) 且在 x == 0 時給出 0 的程式碼。

scipy.io 改進#

未格式化的 Fortran 檔案讀取器#

新類別 scipy.io.FortranFile 有助於讀取 Fortran 程式碼寫入的未格式化循序檔案。

scipy.io.wavfile 增強功能#

scipy.io.wavfile.write 現在接受檔案緩衝區。之前它只接受檔案名稱。

scipy.io.wavfile.readscipy.io.wavfile.write 現在可以處理浮點 WAV 檔案。

scipy.interpolate 改進#

B 樣條導數和反導數#

scipy.interpolate.splderscipy.interpolate.splantider 函數,用於計算表示 B 樣條導數和反導數的 B 樣條已新增。這些函數也可在基於類別的 FITPACK 介面中作為 UnivariateSpline.derivativeUnivariateSpline.antiderivative 使用。

scipy.stats 改進#

除了位置參數外,分佈現在還允許在所有方法中使用關鍵字參數。

已新增函數 scipy.stats.power_divergence,用於 Cressie-Read 冪散度統計和適合度檢定。此統計系列中包含「G 檢定」(https://en.wikipedia.org/wiki/G-test)。

scipy.stats.mood 現在接受多維輸入。

scipy.stats.wilcoxon 新增了連續性校正選項。

scipy.stats.chisquare 現在具有 axis 參數。

scipy.stats.mstats.chisquare 現在具有 axisddof 參數。

已棄用的功能#

expm2expm3#

矩陣指數函數 scipy.linalg.expm2scipy.linalg.expm3 已棄用。所有使用者都應改用數值上更穩健的 scipy.linalg.expm 函數。

scipy.stats 函數#

scipy.stats.oneway 已棄用;應改用 scipy.stats.f_oneway

scipy.stats.glm 已棄用。scipy.stats.ttest_ind 是一個等效函數;在 statsmodels 中可以找到功能更全的通用(和廣義)線性模型實作。

scipy.stats.cmedian 已棄用;應改用 numpy.median

向後不兼容的變更#

LIL 矩陣賦值#

現在使用兩個索引陣列為 LIL 矩陣賦值的工作方式與賦值到 ndarray 類似

>>> x = lil_matrix((3, 3))
>>> x[[0,1,2],[0,1,2]]=[0,1,2]
>>> x.todense()
matrix([[ 0.,  0.,  0.],
        [ 0.,  1.,  0.],
        [ 0.,  0.,  2.]])

而不是給出結果

>>> x.todense()
matrix([[ 0.,  1.,  2.],
        [ 0.,  1.,  2.],
        [ 0.,  1.,  2.]])

依賴先前行為的使用者將需要重新檢查其程式碼。先前的行為是通過 x[numpy.ix_([0,1,2],[0,1,2])] = ... 獲得的。

已棄用的 radon 函數已移除#

已移除在 scipy 0.11.0 中已棄用的 misc.radon 函數。使用者可以在 scikit-image 中找到功能更全的 radon 函數。

stats.distributions 移除已棄用的關鍵字 xaxb#

已從 scipy.stats 中的分佈中移除自 0.11.0 起已棄用的關鍵字 xaxb

MATLAB 檔案讀取器/寫入器的變更#

主要變更是,當儲存為 MATLAB 5 格式檔案時,numpy 中的 1D 陣列現在變為行向量(形狀 1, N)。先前,1D 陣列儲存為列向量 (N, 1)。這是為了協調寫入 MATLAB 4 和 5 格式的行為,並適應 numpy 和 MATLAB 的預設值 - 例如 np.atleast_2d 將 1D 陣列作為行向量傳回。

嘗試以 MATLAB 4 格式儲存大於 2 維的陣列現在會引發錯誤,而不是靜默地將陣列重塑為 2D。

scipy.io.loadmat('afile') 過去常常在 Python 系統路徑 (sys.path) 上尋找 afile;現在 loadmat 僅在目前目錄中尋找相對路徑檔案名稱。

其他變更#

安全性修復:scipy.weave 先前在某些情況下以不安全的方式使用臨時目錄。

現在需要 Cython 來建置 scipy 的未發行版本。從 Cython 原始碼產生的 C 檔案不再包含在 git 儲存庫中。但是,它們仍然在原始碼發行版本中提供。

程式碼庫進行了相當大的 PEP8 清理。tox pep8 命令已新增;新程式碼應通過此測試命令。

Scipy 無法再使用 gfortran 4.1 編譯(至少在 RH5 上),這可能是因為該編譯器版本不很好地支援 entry 建構。

作者#

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

  • Jorge Cañardo Alastuey +

  • Tom Aldcroft +

  • Max Bolingbroke +

  • Joseph Jon Booker +

  • François Boulogne

  • Matthew Brett

  • Christian Brodbeck +

  • Per Brodtkorb +

  • Christian Brueffer +

  • Lars Buitinck

  • Evgeni Burovski +

  • Tim Cera

  • Lawrence Chan +

  • David Cournapeau

  • Dražen Lučanin +

  • Alexander J. Dunlap +

  • endolith

  • André Gaul +

  • Christoph Gohlke

  • Ralf Gommers

  • Alex Griffing +

  • Blake Griffith +

  • Charles Harris

  • Bob Helmbold +

  • Andreas Hilboll

  • Kat Huang +

  • Oleksandr (Sasha) Huziy +

  • Gert-Ludwig Ingold +

  • Thouis (Ray) Jones

  • Juan Luis Cano Rodríguez +

  • Robert Kern

  • Andreas Kloeckner +

  • Sytse Knypstra +

  • Gustav Larsson +

  • Denis Laxalde

  • Christopher Lee

  • Tim Leslie

  • Wendy Liu +

  • Clemens Novak +

  • Takuya Oshima +

  • Josef Perktold

  • Illia Polosukhin +

  • Przemek Porebski +

  • Steve Richardson +

  • Branden Rolston +

  • Skipper Seabold

  • Fazlul Shahriar

  • Leo Singer +

  • Rohit Sivaprasad +

  • Daniel B. Smith +

  • Julian Taylor

  • Louis Thibault +

  • Tomas Tomecek +

  • John Travers

  • Richard Tsai +

  • Jacob Vanderplas

  • Patrick Varilly

  • Pauli Virtanen

  • Stefan van der Walt

  • Warren Weckesser

  • Pedro Werneck +

  • Nils Werner +

  • Michael Wimmer +

  • Nathan Woods +

  • Tony S. Yu +

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