在實際應(yīng)用中,經(jīng)常會遇上這樣的小需求:根據(jù)一段給定的數(shù)組,生成由這一段數(shù)組值構(gòu)成的對稱矩陣。
例如,給定數(shù)組[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,該類型的矩陣完全由給定的數(shù)組決定。
筆者給出實現(xiàn)以上功能的一種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
代碼邏輯如此:先得到數(shù)組長度以推定出所欲生成矩陣的規(guī)格,接著按照數(shù)組值的順序生成矩陣的上對角元,最后利用對稱性完成整個矩陣輸出。
該函數(shù)參數(shù)只有一個,即給定的numpy數(shù)組。
到此這篇關(guān)于python實現(xiàn)由數(shù)組生成對稱矩陣的文章就介紹到這了,更多相關(guān)由數(shù)組生成對稱矩陣內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Python:合并兩個numpy矩陣的實現(xiàn)
- Python實現(xiàn)求解斐波那契第n項的解法(包括矩陣乘法+快速冪)
- Python 如何求矩陣的逆
- python用分數(shù)表示矩陣的方法實例
- Python numpy大矩陣運算內(nèi)存不足如何解決
- Python計算矩陣的和積的實例詳解
- python 如何將兩個實數(shù)矩陣合并為一個復(fù)數(shù)矩陣