2017-06-19 8 views
0

私は対称行列を持っていますが、np.whereを使って行列の上三角部分を検索することが可能であるかどうか不思議です。つまり、ループまたは関数を使用して行列の下三角部分を削除する方法があるので、np.whereを使用して行列の上三角部分を検索できますか?Pythonで行列の一部だけを検索する

+0

短い回答 - はい可能です。しかし、私はそれが上三角であるかどうかによって行列の各行から部分行を引き出す方法はないと信じています。そして、行列全体を検索するよりも速くなるのではないかと疑います。目標は何ですか?あなたが達成しようとしているものの周りに別の方法があるかもしれません –

+0

私がしたいことは、最小相関閾値を満たす変数を選択することです。だから私が持っているなら、0.7の閾値と行列 [[1、0.42、0.78]、[0.42、1、0.73]、[0.78,0.73,1]]と言うと、どの変数対が.7を超えているか知りたい。だから私は(var1、var3)と(var2、var3)を返すしたいと思います。しかし、私がnumpy.whereを使うだけであれば、冗長ペアリングが得られるでしょう。 – ij1994

答えて

1
import numpy as np 

a = np.array([[1 ,0.42, 0.78], [0.42, 1, 0.73], [0.78, 0.73, 1]]) 
# k=1 excludes diagonal correlation is 1 
np.where(np.triu(a > 0.7, k=1)) 
+0

ありがとう! – ij1994

関連する問題