7.1.2 NumPy回顧
譯者:Python 文檔協(xié)作翻譯小組,原文:NumPy refresher。
本文以 CC BY-NC-SA 4.0 協(xié)議發(fā)布,轉(zhuǎn)載請(qǐng)保留作者署名和文章出處。
Python 文檔協(xié)作翻譯小組人手緊缺,有興趣的朋友可以加入我們,完全公益性質(zhì)。交流群:467338606。
這里有一些NumPy的快速指南:
機(jī)器學(xué)習(xí)的矩陣慣例
行是水平的,列是垂直的。每一行都是一個(gè)樣本。因此,inputs[10,5]是10個(gè)樣本的矩陣,其中每個(gè)樣本具有維度5。如果這是神經(jīng)網(wǎng)絡(luò)的輸入,則從輸入到第一個(gè)隱藏層的權(quán)重將表示大小(5, #hid)的矩陣。
考慮這個(gè)數(shù)組:
>>> numpy.asarray([[1., 2], [3, 4], [5, 6]])
array([[ 1., 2.],
[ 3., 4.],
[ 5., 6.]])
>>> numpy.asarray([[1., 2], [3, 4], [5, 6]]).shape
(3, 2)
這是3×2矩陣,即有3行和2列。
要訪問第3行(#2行)和第1列(#0列)中的元素:
>>> numpy.asarray([[1., 2], [3, 4], [5, 6]])[2, 0]
5.0
要記住這一點(diǎn),我們從左到右、從上到下讀取,所以連續(xù)的元素是一行。也就是說,有3行和2列。
Broadcasting
Numpy在算術(shù)運(yùn)算期間對(duì)不同形狀的數(shù)組進(jìn)行broadcasting。這通常意味著較小的數(shù)組(或標(biāo)量)被broadcasted到較大的數(shù)組,以讓它們具有兼容的形狀。下面的示例演示broadcastaing的一個(gè)實(shí)例:
>>> a = numpy.asarray([1.0, 2.0, 3.0])
>>> b = 2.0
>>> a * b
array([ 2., 4., 6.])
在這種情況下,這里較小的數(shù)組b(實(shí)際上是標(biāo)量,其工作原理類似于一個(gè)0維數(shù)組)在乘法過程中被broadcasted到與a相同的大小。這個(gè)技巧通常用于簡(jiǎn)化表達(dá)式的寫法。有關(guān)broadcasting的更多詳情,請(qǐng)參見numpy用戶指南。