本文實例講述了Python創建對稱矩陣的方法。分享給大家供大家參考,具體如下:
對稱(實對稱)矩陣也即:
step 1:創建一個方陣
1
2
3
4
5
6
7
8
|
>>> X = np.random.rand( 5 * * 2 ).reshape( 5 , 5 ) >>> X array([[ 0.26984148 , 0.25408384 , 0.12428487 , 0.0194565 , 0.91287708 ], [ 0.31837673 , 0.35493156 , 0.74336268 , 0.31810561 , 0.04409245 ], [ 0.06644445 , 0.8967897 , 0.10990936 , 0.05036292 , 0.72581982 ], [ 0.94758512 , 0.21375975 , 0.36781736 , 0.1633904 , 0.36070709 ], [ 0.53263787 , 0.18380491 , 0.0225521 , 0.91239367 , 0.75521585 ]]) |
step 2:保留其上三角部分
1
2
3
4
5
6
7
8
|
>>> X = np.triu(X) # 保留其上三角部分 >>> X array([[ 0.26984148 , 0.25408384 , 0.12428487 , 0.0194565 , 0.91287708 ], [ 0. , 0.35493156 , 0.74336268 , 0.31810561 , 0.04409245 ], [ 0. , 0. , 0.10990936 , 0.05036292 , 0.72581982 ], [ 0. , 0. , 0. , 0.1633904 , 0.36070709 ], [ 0. , 0. , 0. , 0. , 0.75521585 ]]) |
step 3:將上三角”拷貝”到下三角部分
1
2
3
4
5
6
7
|
>>> X + = X.T - np.diag(X.diagonal()) >>> X array([[ 0.26984148 , 0.25408384 , 0.12428487 , 0.0194565 , 0.91287708 ], [ 0.25408384 , 0.35493156 , 0.74336268 , 0.31810561 , 0.04409245 ], [ 0.12428487 , 0.74336268 , 0.10990936 , 0.05036292 , 0.72581982 ], [ 0.0194565 , 0.31810561 , 0.05036292 , 0.1633904 , 0.36070709 ], [ 0.91287708 , 0.04409245 , 0.72581982 , 0.36070709 , 0.75521585 ]]) |
注意,要減去一次對角線上的元素。因為上三角cov
,和下三角cov.T
在進行相加時會把主對角線上的元素相加兩次。
step 4:測試
1
2
3
4
5
6
|
>>> X.T = = X array([[ True , True , True , True , True ], [ True , True , True , True , True ], [ True , True , True , True , True ], [ True , True , True , True , True ], [ True , True , True , True , True ]], dtype = bool ) |
希望本文所述對大家Python程序設計有所幫助。
原文鏈接:http://blog.csdn.net/lanchunhui/article/details/50353637