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