如何在Python中从相关矩阵中识别重要项(没有内部循环)

2024-05-23 17:55:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经从一个小测试集构建了一个相关矩阵输出,结果如下。真值是指大于定义值的值(例如,结果=相关矩阵>0.75)

[[False False False  True]
 [False False  True False]
 [False  True False  True]
 [ True False  True False]]

注意,我还伪造了对角线(从左上到右下)。我也只需要一半的矩阵,因为它是一个镜子左上/右下。你知道吗

在Numpy(或other)中是否有方法/函数让我返回True值的行/列?当我对实际数据(200000行)使用这个函数时,我需要能够快速地完成,而不需要使用内部循环。20万*20万的支票会很慢。我想一定有一个矩阵/numpy/scikit.学习etc功能,将提供这个,但我还没有找到一个。你知道吗

预期的结果是:

[[1, 4], [2, 3], [3, 2], [3, 4], [4, 1], [4, 3]]

理想情况下,如果这是镜像,则:

[[1, 4], [2, 3], [3, 4]] 

Tags: 数据方法函数numpyfalsetrue定义矩阵
1条回答
网友
1楼 · 发布于 2024-05-23 17:55:40

为了得到基于0的索引,一种直接的方法是用np.triu遮住下对角线,然后用np.argwhere得到索引-

np.argwhere(np.triu(a))

也可以使用np.triu(a,1)来掩盖对角线位置。你知道吗

另一种方法是使用在broadcasting帮助下创建的显式掩码-

r = np.arange(a.shape[0])
a[r[:,None] >= r] = 0 # Note that this changes input array
indices = np.argwhere(a)

相关问题 更多 >