在python中使矩阵运算更快的最佳方法是什么

时间:2013-04-23 02:45:32

标签: python optimization

当我在代码中消除执行时间时,我发现以下三行占用了近99%的运行时间,因此我的目标是优化这三行代码。

以下代码的详细信息如下:     R,P,Q都是稀疏矩阵,我使用scipy.sparse.lil_matrix,数据类型是np.float64,     和alpha,beta只是浮动常数。

eij = R[i, j] - np.dot(P[i, :], Q[:, j])                             (~9s)
    for k in range(K):                                               (~11s)
         P[i, k] += alpha * (2 * eij * Q[k, j] - beta * P[i, k])
         Q[k, j] += alpha * (2 * eij * P[i, k] - beta * Q[k, j])

我怎样才能让它们跑得更快!!! ???

1 个答案:

答案 0 :(得分:0)

事实证明numpy已经优化了矩阵类型的操作,因此将代码重写为:

eij = rating_train[i, j] - np.dot(P[i, :], Q[:, j])
P[i, :] += alpha * (2 * eij * Q[:, j] - beta * P[i, :])
Q[:, j] += alpha * (2 * eij * P[i, :] - beta * Q[:, j])

这比原始代码快1倍。但我仍然不满意..