numpy 辨异(三)—— hstack/column_stack,linalg.eig/linalg.eigh
生活随笔
收集整理的這篇文章主要介紹了
numpy 辨异(三)—— hstack/column_stack,linalg.eig/linalg.eigh
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. np.hstack np.column_stack
>>> np.hstack([np.array([1, 2, 3]), np.array([4, 5, 6])]) array([1, 2, 3, 4, 5, 6])>>> np.column_stack([np.array([1, 2, 3]), np.array([4, 5, 6])]) array([[1, 4],[2, 5],[3, 6]])當然對等地,也存在,np.vstack, np.row_stack
>>> np.vstack([np.array([1, 2, 3]), np.array([4, 5, 6])]) array([[1, 2, 3],[4, 5, 6]])>>> np.row_stack([np.array([1, 2, 3]), np.array([4, 5, 6])]) array([[1, 2, 3],[4, 5, 6]])# 兩者近乎等效2. np.linalg.eig() np.linalg.eigh()
首先一點,不管二者處理的是不是對稱陣,兩者處理的首先是方陣(square array)。
兩者均用于矩陣特征分解,np.linalg.eigh()適用于對稱矩陣,可見矩陣分析中針對對稱矩陣的特征值分解有一套特殊的不同于一般矩陣的理論。
def main():X = np.random.randn(3, 3)X = X.triu()X += (X.T-np.diag(X.diagonal()))# 構造對稱矩陣 XLambda1, Q1 = np.linalg.eig(X) Lambda2, Q2 = np.linalg.eigh(X)print(Lambda1)# [ 1.53176315 -0.35907022 -1.8924684 ]# 排序不太嚴格print(Lambda2)# [-1.8924684 -0.35907022 1.53176315]# 嚴格的升序if __name__ == '__main__':main()3. array.T vs array.transpose()
形式上array.T自然比array.transpose()這樣一個函數調用形式稍顯簡潔。
>>> x = np.ones((3, 4)) >>> x.T array([[ 1., 1., 1.],[ 1., 1., 1.],[ 1., 1., 1.],[ 1., 1., 1.]]) >>> x.transpose() array([[ 1., 1., 1.],[ 1., 1., 1.],[ 1., 1., 1.],[ 1., 1., 1.]])事實上,x.T == x.transpose(range(x.ndim)[::-1])
>>> x.transpose(range(x.ndim)[::-1]) array([[ 1., 1., 1.],[ 1., 1., 1.],[ 1., 1., 1.],[ 1., 1., 1.]])4. np.triu np.tril
np.triu:upper triangle of an array
np.tril:lower triangle of an array
5. concatenate與hstack/vstack
注意,要進行拼接的數組都是以tuple_like((a, b))的形式傳遞給這三個函數的,
np.concatenate((a, b), axis=0) == np.vstack((a, b))# 也對應于默認的情況,np.concatenate((a, b)) np.concatenate((a, b), axis=1) == np.hstack((a, b))轉載于:https://www.cnblogs.com/mtcnn/p/9422237.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的numpy 辨异(三)—— hstack/column_stack,linalg.eig/linalg.eigh的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: whmcs模板路径
- 下一篇: xml配置文件推荐方式