NumPy迎來重大版本更新,新增函數(shù)注釋、滑動窗口視圖功能
本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。
最近,NumPy上線了最新版本——NumPy 1.20。

作為Python的最重要的擴展程序庫之一,也是入門機器學(xué)習(xí)的必備工具,該版本一經(jīng)發(fā)布,就一度登上Hacker News等社區(qū)熱搜榜單。

這個版本號稱是迄今為止規(guī)模最大版本,共合并了184人貢獻的約684條PR,支持的Python版本是3.7-3.9。
注意哦,并不支持Python 3.6。

此次版本的亮點如下:
- NumPy函數(shù)注釋。
- 擴大SIMD使用范圍,提高ufuncs的執(zhí)行速度。
- 文檔改進,包括大約185個PR合并
- 對即將到來的Cython 3.0提供初步支持。
- 可為數(shù)組提供滑動窗口視圖。
三大新功能
此次上線版本主要有三大新功能。
第一個,random.Generator類有一個新的permuted函數(shù)。
新函數(shù)與shuffle和permutation的不同之處在于,給定軸索引的子數(shù)組會被換算。
比如,現(xiàn)在就可以對一個二維數(shù)組的行或者列進行換算。
第二個,sliding_window_view,可為NumPy數(shù)組提供滑動窗口視圖。
這一功能適用于多維度、可以明確指定軸、同一軸使用多次、移動多個元素的視圖等用法。

第三個,numpy.broadcast_shapes,一個面向用戶的全新功能,從給定的形狀元組相互廣播中獲得形狀。

除了新功能之外,還有一系列的改進。
比如,啟動多平臺SIMD編譯器優(yōu)化。
其中,包括新的構(gòu)建參數(shù)、跨體系結(jié)構(gòu)CPU調(diào)度程序、自動生成的新C標(biāo)頭、向numpy umath模塊添加新屬性,在PytestTester運行期間打印支持的CPU功能。
再比如,棄用np.int這一別名。
原本np.int是int的別名,但常常讓新手困擾,而且原本也是出于歷史原因而存在。
除了np.int外,還有一個不推薦使用的別名名單。(其中,第三列為備用NumPy名稱)

以及,還有mode 和 searchside的inexact match、numpy.dual模塊都被棄用。
對于新版本的發(fā)布,有不少網(wǎng)友表示很期待里面中的新功能。
比如,類型注釋。

類型注釋對我來很重要。如果你比較在意SIMD,或許可以考慮Julia。
還有網(wǎng)友pick了“滑動窗口視圖”這一新功能。
在分析數(shù)據(jù)時經(jīng)常使用滑動窗口,以前可以使用as_strided的方式來實現(xiàn),但這個方法太麻煩,現(xiàn)在這一新功能顯然更簡單。
