【发布时间】:2014-10-20 10:31:22
【问题描述】:
我不断计算相关矩阵,其中每次基础数据的顺序都是随机的。当随机数据的相关性分数大于或等于使用有序数据确定的原始相关性时,我想用 +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 秒,这似乎太长了。
他将非常感激任何帮助。
【问题讨论】:
-
初步猜测,将
sorted_index_list和sorted_column_list转换为字典可能会有所帮助,因为您将能够更快地查找i和j各自的位置。 -
scoring_matrix与您的数据相关的形状是什么? -
大家好。 Marius,谢谢,我会试一试并报告我的发现。 @chrisb score_matrix 与数据具有相同的形状,即对于数据中的每个单元格(将保存在一对变量之间测量的相关系数得分),评分矩阵中都有一个单元格。
标签: python numpy matrix pandas