2011-01-31 200 views
1

嗨,numpy中的對稱矩陣?

我希望在python中啓動一個對稱矩陣並用零填充它。

目前,我已經發起了一個已知尺寸的數組,但是這不適合隨後輸入到R作爲距離矩陣。

numpy中是否有任何'簡單'方法來創建對稱矩陣?

感謝, D.

編輯

我要澄清 - 創建 '對稱' 矩陣是罰款。但我感興趣的只是產生下三角形式,即

ar = numpy.zeros((3, 3)) 

array([[ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.]]) 

我想:

array([[ 0], 
     [ 0, 0 ], 
     [ 0., 0., 0.]]) 

這可能嗎?

+0

你能否詳細說明一下`不適合隨後輸入到R中作爲距離矩陣'。你沒有標記`R`,所以它是相關的?謝謝 – eat 2011-01-31 21:40:12

回答

3

我不認爲用這種三角形陣列嘗試工作是不可行的。

所以這裏是例如一個簡單的執行情況(平方)兩兩歐氏距離:

def pdista(X): 
    """Squared pairwise distances between all columns of X.""" 
    B= np.dot(X.T, X) 
    q= np.diag(B)[:, None] 
    return q+ q.T- 2* B 

對於性能方面它是很難被擊敗它(在Python水平)。不使用這種方法的主要優點是什麼?