有效地更新评分矩阵中保存的值

时间:2014-08-27 00:05:45

标签: python numpy matrix pandas

我不断计算相关矩阵,每次基础数据的顺序随机化。当随机数据的相关性得分大于或等于用有序数据确定的原始相关性时,我想用+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秒,这看起来过分。

任何帮助都非常有用。

1 个答案:

答案 0 :(得分:2)

假设一切都有相同的索引,这应该按预期工作并且非常快。

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