Python中矩阵乘法的快速方法

时间:2015-09-21 10:23:06

标签: python matrix-multiplication dot-product

有没有人知道计算矩阵的快速方法,例如:

Z{i,j}  = \sum_{p,k,l,q} \frac{A_{ip} B_{pk} C_{kl} D_{lq} E_{qj} }{a_p - b_q - c}

enter image description here

对于正常的矩阵乘法,我会使用numpy.dot(a,b),,但现在我需要将元素除以$a_p$$b_q$

有什么建议吗?

有关如何计算的任何建议

$$ C_{i,j} =  \sum _p = \frac{E_{i,p} B_{p,j}}{m_p} $$

也会有很大的帮助。

1 个答案:

答案 0 :(得分:0)

请注意,(E[i, p] * B[p, j]) / m[p]等于E[i, p] * (B[p, j] / m[p]),因此您可以在调用m之前将B简单地划分为np.dot

def f(E, B, m):
    B = np.asarray(B)  # matrix
    m = np.asarray(m).reshape((B.shape[0], 1))  # row vector
    return np.dot(E, B / m)  # m is broadcasted to match B