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.betanp.random.binomialnp.random.laplacenp.random.logisticnp.random.logseriesnp.random.multinomial 取樣時,如果底層 MT19937 隨機串流中產生 0,則串流可能會變更。發生這種情況的機率為 \(10^{53}\) 分之 1,因此對於任何給定種子,串流變更的機率都極小。如果在底層產生器中遇到 0,則現在會捨棄產生的不正確值(np.infnp.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 時特殊處理物件陣列