【发布时间】:2013-06-30 13:01:15
【问题描述】:
假设我们有两个矩阵A 和B,让矩阵C 成为A*B(矩阵乘法不是元素)。我们希望只获得C 的对角线条目,这可以通过np.diagonal(C) 完成。但是,这会导致不必要的时间开销,因为我们将 A 与 B 相乘,即使我们只需要将 A 中的每一行与具有相同“id”的 B 的列相乘,即第 1 行A 与B 的第 1 列、A 的第 2 行与B 的第 2 列等等:形成C 对角线的乘法。有没有办法使用 Numpy 有效地实现这一目标?我想避免使用循环来控制哪一行与哪一列相乘,相反,我希望有一个内置的 numpy 方法来执行这种操作以优化性能。
提前谢谢..
【问题讨论】:
-
请注意:NumPy 中的
A*B是逐元素乘法,而不是矩阵乘法(即a.dot(b))。 -
是
A和B类型为ndarray或matrix? -
@Blair,如果
A和B是numpy.array,就是这种情况。如果是numpy.matrix,可以使用A*B -
@gnibbler D'oh。我习惯于忘记
numpy.matrix的存在,因为我习惯性地使用三维数据。感谢您指出这一点。 -
@Bitwise、
A和B是矩阵,抱歉没有澄清