python實現由數組生成對稱矩陣
在實際應用中,經常會遇上這樣的小需求:根據一段給定的數組,生成由這一段數組值構成的對稱矩陣。
例如,給定數組[1,2,3,4,5,6,7,8,9,10],要求生成如下的矩陣:
[[0,1,2,3,4], [1,0,5,6,7], [2,5,0,8,9], [3,6,8,0,10], [4,7,9,10,0]]
其中,對角元全為0,該類型的矩陣完全由給定的數組決定。
筆者給出實現以上功能的一種python參考代碼如下:
def semi_to_full(m): import numpy as np n = len(m) n_matrix = int((1+int((1+8*n)**0.5))/2) semi_matrix = np.zeros((n_matrix,n_matrix),dtype='int32') start_index = 0 for row in range(n_matrix-1): end_index = start_index+(n_matrix-1-row) semi_matrix[row,row+1:]=m[start_index:end_index] start_index = end_index full_matrix = semi_matrix+semi_matrix.T return full_matrix
代碼邏輯如此:先得到數組長度以推定出所欲生成矩陣的規格,接著按照數組值的順序生成矩陣的上對角元,最後利用對稱性完成整個矩陣輸出。
該函數參數隻有一個,即給定的numpy數組。
到此這篇關於python實現由數組生成對稱矩陣的文章就介紹到這瞭,更多相關由數組生成對稱矩陣內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!