Numpy中的數組shape為(m,)說明它是一個一維數組,或者說是一個向量,不區分列向量還是行向量,在與矩陣進行矩陣乘法時,numpy會自動判斷此時的一維數組應該取行向量還是列向量。
X = np.random.randn(4,3) # X.shape:(4, 3) t = np.array([2,3,4]) # t.shape:(3,),此時不區分行向量還是列向量 y = X.dot(t) # 計算矩陣與向量乘法時,會把t當做列向量來計算,此時結果仍然是一維數組(但我們知道,這個結果應該是列向量)
在numpy中,用二維矩陣而不是一維矩陣來表示行向量和列向量:
行向量的形狀:(n, 1)
列向量的形狀:(1, n)
X = np.random.randn(4,3) # X.shape:(4, 3) t = np.array([2,3,4]).reshape(3,1) # t.shape:(3,1),表示是列向量 y = X.dot(t) # y.shape:(4,1),表示結果也是列向量
計算線性方程組:
y = 4 + 2*x1 + 3*x2 + x3
X = np.random.randn(4,3) X_b = np.c_[np.ones((4,1)), X] #構造矩陣,增加x0=1 t = np.array([4,2,3,1]).reshape(4,1) y = X_b.dot(t)