NumPy 1.16.4 發行說明#
NumPy 1.16.4 版本修正了針對 1.16.3 版本回報的錯誤,並從主分支回溯移植了數個增強功能,這些功能似乎適用於最後一個支援 Python 2.7 的發行系列。PyPI 上的 wheels 連結了 OpenBLAS v0.3.7-dev,這應該可以修正 Skylake 系列 CPU 上的問題。
建置此版本的下游開發者應使用 Cython >= 0.29.2,若使用 OpenBLAS,則應使用 OpenBLAS > v0.3.7。支援的 Python 版本為 2.7 和 3.5-3.7。
新的棄用#
C-API 包裝陣列的可寫入旗標#
當從 C-API 建立陣列以包裝資料指標時,我們唯一能得知資料讀寫性質的指示是建立時設定的 writeable
旗標。強制將旗標設為可寫入是危險的。未來將無法從 python 將可寫入旗標切換為 True
。此棄用不應影響太多使用者,因為以這種方式建立的陣列在實務上非常罕見,且僅透過 NumPy C-API 提供。
相容性注意事項#
隨機串流的潛在變更#
由於將 log 應用於隨機浮點數時存在錯誤,因此當從 np.random.beta
、np.random.binomial
、np.random.laplace
、np.random.logistic
、np.random.logseries
或 np.random.multinomial
取樣時,如果底層 MT19937 隨機串流中產生 0,則串流可能會變更。發生這種情況的機率為 \(10^{53}\) 分之 1,因此對於任何給定種子,串流變更的機率都極小。如果在底層產生器中遇到 0,則現在會捨棄產生的不正確值(np.inf
或 np.nan
)。
變更#
numpy.lib.recfunctions.structured_to_unstructured
不會擠壓單一欄位視圖#
先前 structured_to_unstructured(arr[['a']])
會產生擠壓後的結果,這與 structured_to_unstructured(arr[['a', b']])
不一致。這是一個意外。舊的行為可以使用 structured_to_unstructured(arr[['a']]).squeeze(axis=-1)
或更簡單的 arr['a']
來保留。
貢獻者#
總共有 10 人為此版本做出貢獻。名字旁邊有「+」號的人是第一次貢獻 patch。
Charles Harris
Eric Wieser
Dennis Zollo +
Hunter Damron +
Jingbei Li +
Kevin Sheppard
Matti Picus
Nicola Soranzo +
Sebastian Berg
Tyler Reddy
Pull request 已合併#
總共有 16 個 pull request 為此版本合併。
#13392: 錯誤:某些 PyPy 版本缺少 PyStructSequence_InitType2。
#13394: 維護,棄用:修正已棄用的
assertEquals()
#13396: 錯誤:修正單一欄位類型上的 structured_to_unstructured (回溯移植)
#13549: 建置:使 CI 再次通過 pytest 4.5
#13552: 測試:在 conftest.py 中註冊標記。
#13559: 錯誤:移除 arraymultiter_new 中空 kwargs 的 ValueError
#13560: 錯誤:在 crackfortran 中新增 TypeError 到接受的例外。
#13561: 錯誤:處理 descr_to_dtype 中的子陣列
#13562: 錯誤:保護產生器免於 log(0.0)
#13563: 錯誤:在…時,始終從 structured_to_unstructured 返回視圖
#13564: 錯誤:檢查編譯器版本時捕獲 stderr
#13565: 錯誤:longdouble(int) 無法運作
#13587: 錯誤:distutils/system_info.py 修正遺失的 subprocess 導入 (#13523)
#13620: 錯誤,棄用:修正沒有 base 的陣列的可寫入旗標設定
#13641: 維護:準備 1.16.4 版本。
#13644: 錯誤:在列印 rel-、abs-error 時特殊處理物件陣列