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 維積分功能,介面比 dblquad
和 tplquad
更靈活。
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 函數 symm
、syrk
、syr2k
、hemm
、herk
和 her2k
現在被封裝在 scipy.linalg
中。
矩陣函數#
已實作或更新了多種矩陣函數演算法,這些演算法遵循 Nick Higham 及其合著者最近論文中的詳細描述。這些包括矩陣平方根 (sqrtm
)、矩陣對數 (logm
)、矩陣指數 (expm
) 及其 Frechet 導數 (expm_frechet
) 以及分數矩陣冪 (fractional_matrix_power
)。
scipy.optimize
改進#
信賴域無約束最小化演算法#
minimize
函數獲得了兩個用於無約束最小化的信賴域求解器:dogleg
和 trust-ncg
。
scipy.sparse
改進#
布林比較和稀疏矩陣#
所有稀疏矩陣類型現在都支援布林資料和布林運算。兩個稀疏矩陣 A 和 B 可以以所有預期的方式進行比較 A < B、A >= B、A != 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.xlogy
和 scipy.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.read
和 scipy.io.wavfile.write
現在可以處理浮點 WAV 檔案。
scipy.interpolate
改進#
B 樣條導數和反導數#
scipy.interpolate.splder
和 scipy.interpolate.splantider
函數,用於計算表示 B 樣條導數和反導數的 B 樣條已新增。這些函數也可在基於類別的 FITPACK 介面中作為 UnivariateSpline.derivative
和 UnivariateSpline.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
現在具有 axis 和 ddof 參數。
已棄用的功能#
expm2
和 expm3
#
矩陣指數函數 scipy.linalg.expm2 和 scipy.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
移除已棄用的關鍵字 xa
和 xb
#
已從 scipy.stats
中的分佈中移除自 0.11.0 起已棄用的關鍵字 xa
和 xb
。
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 建構。