2011-01-31 10 views
1

HI、対称行列はnumpyで表されますか?

私は、Pythonで対称行列を開始し、ゼロを設定したいと考えています。

現時点では、私は既知の寸法の配列を開始しましたが、これはその後の距離行列としてのRへのその後の入力には不適切です。

numpyには、対称行列を作成するための「単純な」メソッドがありますか?

おかげで、 D.

編集

私は明確にすべき - '対称' 行列で結構です作成。

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

が可能です。この:。しかし、私は私がしたい、すなわち、唯一の下三角の形を生成することに興味が

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

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

+0

「距離行列としてのRへの後続入力には適していません」ということをもっと詳しく説明できますか?あなたは 'R'というタグをつけていないので、それはまったく関連していますか?ありがとう – eat

+0

申し訳ありません - いいえ、それは本当に関係ありません。アイテム間の距離(ユークリッド、マンハッタン、コサインなど)は、ペアごとに計算されるため、対称的な出力になります。私はRがデータをうまく処理できないので、カスタム行列を計算しています。それは別の話です。混乱の謝罪! –

+1

@ダーレン:まだあなたが探しているものが不明です。あなたはおそらく、例えば上三八角形の部分だけを計算し、何とか魔法のように三角形の下の部分はそれを反映すると示唆していますか?私は実践的なペナルティを期待できます。あなたはあなたが持っているコードを見せてくれますか? – eat

答えて

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のレベルで)。このアプローチを使用しない主な利点は何ですか?

関連する問題