日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

numpy 辨异(三)—— hstack/column_stack,linalg.eig/linalg.eigh

發布時間:2023/12/1 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

>>> x = np.array([[1, 2, 3], [3, 4, 5], [5, 6, 7], [7, 8, 9]]) >>> x array([[1, 2, 3],[3, 4, 5],[5, 6, 7],[7, 8, 9]]) >>> np.triu(x) array([[1, 2, 3],[0, 4, 5],[0, 0, 7],[0, 0, 0]]) >>> np.tril(x) array([[1, 0, 0],[3, 4, 0],[5, 6, 7],[7, 8, 9]])

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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。