① Numpy array數組的常見運算
Numpy是python最流行的數學計算庫之一,它 支持多維數組與矩陣的各種運算。在Numpy庫中ndarray對象是其核心,它支持任意維度的數組(向量),所有的運算都是以array為基礎展開的。此外,在 Numpy的 矩陣mat是array的一個子集,也就是二維的數組。
下面我們來看一下array的基本運算。
NumPy數組在與數值進行運算時,具有廣播特性。也就是說,數組中的每個元素都會進行同樣的運算,這些運算包括「+、-、*、/、**、&、|、^」等。
例如:array([1,2,3,4,5])*2 相當於array([1*2,2*2,3*2,4*2,5*2]), 代碼示例如下。
對於維度相同的兩個數組,將按照元素逐項進行運算。以『*』為例:
已知
那麼:
代碼示例如下
對於維度不同的兩個數組,則會進行廣播運算, 例如
那麼
我們知道對於向量
那麼a與b的點積為:
在Numpy中,一維數組的點積(dot)和內積(inner)是相同的。但是對於多維數組來說,則有差別。inner運算中,可以將數組最後一個維度(行)視為向量,兩個數組的內積就是逐項對這些向量的內積。而dot運算則是前一個數組雨後一個數組轉置後的結果,即inner(a,b.T).
以上代碼在Python 3.7中運行通過。
② python里x=randn mat=x.T.dot 是求什麼
x=randn這個寫法是不對的,randn是numpy里的一個生成隨機array的函數。
比如說要生成一個三行兩列的隨機array,可以這樣寫:
import numpy
x = numpy.random.randn(3,2)
像這樣:
dot(2)是點乘常數就不說了,
那個x.T.dot([1,2,3])就是x.T的
1*1+2*2+3*3=14
2*1+3*2+4*3=20