2017-06-19 33 views
0

我有一个对称矩阵,我很好奇它是否可以只使用np.where搜索矩阵的上三角部分。也就是说,是否有办法使用循环或函数删除矩阵的下三角部分,以便我可以用np来搜索矩阵的上三角部分?只搜索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