有效更新评分矩阵中的值



我一直在计算相关矩阵,每次基础数据的顺序都是随机的。当随机数据的相关性得分大于或等于有序数据确定的原始相关性时,我想用+1更新评分矩阵中的相应单元格。(所有单元格在评分矩阵中以零开头)。

由于我处理shape = (3681, 12709)的矩阵的大小,我想找到一种有效的方法。到目前为止,我的工作效率低下,耗时太长。我想知道是否有矩阵运算式的方法来实现这一点,而不是像我目前正在做的那样迭代:

for i, j in product(data_sorted.index, data_sorted.columns):
    # if random correlation is as good as or better than sorted correlation
    if data_random.loc[i, j] >= data_sorted.loc[i, j]:
        # update scoring matrix
        scoring_matrix[sorted_index_list.index(i)][sorted_column_list.index(j)] += 1

我粗略地确定了这种方法的时间,发现对矩阵的一行这样做大约需要4.2秒,这似乎太过分了。

任何帮助他都会非常感激。

假设所有东西都有相同的索引,这应该会像预期的那样工作,而且非常快。

scoring_matrix += (data_random >= data_sorted).astype(int)

最新更新